APP自动化测试之appium断言
软件测试过程中,无论是手动测试还是自动化测试,每条测试用例都需要有前置条件、操作步骤、实际结果、预期结果。只有当实际结果与预期结果相等的情况下,才能说明这个功能是正确的。在编写自动化测试脚本的时候,我们不仅要将程序按照脚本一步一步的执行起来。更重要的是程序自动执行的每一步是否达到了预期效果。如果测试用例没有预期结果与实际结果的比较,那么这个用例就是无效的。在通过Appium自动化测试时,unittest框架的TestCase类提供了一些用于测试结果的判断,即断言。主要用于实现APP界面上数据和控件状态的检查。
unittest中断言主要有四种类型:
一、布尔断言:要么正确,要么错误的验证。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import unittest class TestAssert(unittest.TestCase): def test_case_01(self): a = 10 # 检查bool值为True self.assertTrue(a > 3) def test_case_02(self): a = 10 # 检查bool值为False self.assertFalse(a <= 3) if __name__ == '__main__': unittest.main()
二、比较断言:比较两个变量的值是否一致,大小关系等。用于检查APP内的文本、提示信息、元素是否出现、控件个数、控件状态等
1、检查APP内的文本
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def test_case01(self, article): self.go_post_article() self.post_article(article) sleep(3) # 点击左上角的“圈子”按钮 self.driver.find_element(*self.circle_homepage_lct.circles).click() try: # 获取帖子的前5个字符 expected = article[0:5] # 圈子第一个帖子的前5个字符 actual = self.driver.find_element(*self.circle_homepage_lct.first_article).text top_five = actual[0:5] # 判断是否一致 self.assertEqual(expected, top_five) except AssertionError as e1: print("断言失败", e1)
2、检查元素是否出现
def is_element_present(self, how, what): """ 判断元素是否存在 :param how: 定位方式 :param what: 定位元素的属性值 :return: True:代表元素存在,False:代表元素不存在 """ try: self.driver.find_element(how, what) return True except NoSuchElementException: return False
3、检查
三、复杂断言:一般用的比较少,像断言两个列表、元组成员数据等。
四、异常断言:断言一些方法会抛出异常,这些异常需要符合我们的预期。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def test_case_03(self): # 提示没有找到“hello”元素的异常 with self.assertRaises(NoSuchElementException): self.driver.find_element(MobileBy.ID, "hello") def test_case_04(self): # 提示除数不能为0的异常 with self.assertRaises(ZeroDivisionError): 1/0