目錄
前言
正文
文法
栗子
前言
首先我們要思考的一點是,什麼是斷言?百度百科是這樣描述的“斷言是程式設計術語,表示為一些布爾表達式,程式員相信在程式中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證。”
那麼我們在做自動化測試的時候也需要用到斷言,自動化測試中尋找元素并進行操作,如果在元素好找的情況下,相信大家都可以較熟練地編寫用例腳本,但是如果隻是進行操作還不夠,有時候還需要對預期結果進行判斷。這時就要用到斷言了。本文主要簡單介紹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自動化測試斷言的實作