天天看点

(十一)Appium自动化测试断言的实现

目录

前言

正文

语法

栗子

前言

首先我们要思考的一点是,什么是断言?百度百科是这样描述的“断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证。”

那么我们在做自动化测试的时候也需要用到断言,自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本,但是如果只是进行操作还不够,有时候还需要对预期结果进行判断。这时就要用到断言了。本文主要简单介绍Python的断言。在前面的文章有分享到Python的unittest单元测试框架,这里介绍断言也是unittest的TestCase类提供的常用assert方法。

正文

语法

assert expression [, arguments]

expression是一个表达式,其值应该为True或者False

常用方法 用法
assertEqual(a, b)   判断a==b
assertNotEqual(a, b)   判断a!=b
assertTrue(x)  bool(x) is True
assertFalse(x)  bool(x) is False
assertIs(a, b)     a is b
assertIsNot(a, b)  a is not b
assertIsNone(x)   x is None
assertIsNotNone(x)    x is not None
assertIn(a, b)  a in b
assertNotIn(a, b)  a not in b
assertIsInstance(a, b)  isinstance(a, b)断言a是b的一个实例
assertNotIsInstance(a, b)   not isinstance(a, b)断言a不是b的实例

1.assertEqual(first,second,msg=None)

该方法是测试first和second是否相等。如果值不相等,测试将失败。

2.assertNotEqual(first,second,msg=None)

该方法是测试first与second不相等,如果值相等,测试将失败。

3.assertTrue(expr,msg=None)和assertFalse(expr,msg=None)

测试expr是true(或false)但当有更具体的方法可以使用时,应避免使用这种方法,例如,assertEqual(a,b)可判断a与b是否相等时,应使用assertEqual()方法,而不是assertTrue(a==b)因为他们在出现故障时提供更好的错误信息。

栗子

对用例是否执行成功断言
# 断言
def assertCheck(self, testName):
    print(testName + '结果为:')
    if 'NG' in GL.flag:
        print('失败')
        return 'NG'
    else:
        print('成功')
        return 'OK'
           
def testcase_001(self):
    u"""测试"""
    RunYaml(self.driver, self._testMethodName).run_yaml(GV.FRONT_DIR + '/testModule/yaml/' + self.ob_name + self._testMethodName + '.yaml')
    self.assertEqual(self.check.assertCheck(self._testMethodName), 'OK')
           
对元素是否存在断言
# 断言 当text == 'true'时,报错不可忽略,否则显示为正确
def check_ele(self, mOperate, cts,i, case_name):
    if mOperate['text'] == 'false':
        try:
            elements_by(mOperate, cts)
            # 当元素存在的时候
            print(mOperate['element_info'] + '存在')
            self.ch.error_shot(case_name,i)
            flag = 'NG'
        except:
            flag = 'OK'
            logging.info(mOperate['element_info'] + '不存在')
    else:
        try:
            elements_by(mOperate, cts)
            flag = 'OK'
            logging.info(mOperate['element_info'] + '存在')
        except:
            flag = 'NG'
            self.ch.error_shot(case_name,i)
            print(mOperate['element_info'] + '应在本页面显示,Fail!')
    GL.flag.append(flag)
           
不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:cx18375319923)哦,Thanks♪(・ω・)ノ
(十一)Appium自动化测试断言的实现