首页 > 技术文章 > APP自动化测试之appium断言

zdf-blog 2021-03-13 16:00 原文

软件测试过程中,无论是手动测试还是自动化测试,每条测试用例都需要有前置条件、操作步骤、实际结果、预期结果。只有当实际结果与预期结果相等的情况下,才能说明这个功能是正确的。在编写自动化测试脚本的时候,我们不仅要将程序按照脚本一步一步的执行起来。更重要的是程序自动执行的每一步是否达到了预期效果。如果测试用例没有预期结果与实际结果的比较,那么这个用例就是无效的。在通过Appium自动化测试时,unittest框架的TestCase类提供了一些用于测试结果的判断,即断言。主要用于实现APP界面上数据和控件状态的检查。

unittest中断言主要有四种类型:

一、布尔断言:要么正确,要么错误的验证。

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()
View Code

二、比较断言:比较两个变量的值是否一致,大小关系等。用于检查APP内的文本、提示信息、元素是否出现、控件个数、控件状态等

1、检查APP内的文本

 

    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)
View Code

 

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、检查

三、复杂断言:一般用的比较少,像断言两个列表、元组成员数据等。

四、异常断言:断言一些方法会抛出异常,这些异常需要符合我们的预期。

 

    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
View Code

 

推荐阅读