python自動化測試中尋找元素并進行操作雨效,如果在元素好找的情況下微宝,相信大家都可以較熟練地編寫用例腳本了珠叔,但光進行操作可能還不夠蝎宇,有時候也需要對預(yù)期結(jié)果進行判斷。
-
常用
這里介紹幾個常用斷言的使用方法运杭,可以一定程度上幫助大家對預(yù)期結(jié)果進行判斷夫啊。-
assertEqual
assertNotEqual
assertTrue
assertFalse
assertIsNone
assertIsNotNone
-
assertEqual 和 assertNotEqual
assertEqual
:如兩個值相等函卒,則passassertNotEqual
:如兩個值不相等辆憔,則pass使用方法:
assertEqual(first,second,msg)
其中first
與second
進行比較,如果相等則通過报嵌;msg
為失敗時打印的信息虱咧,選填;斷言assertNotEqual反著用就可以了锚国。-
assertTrue和assertFalse
assertTrue
:判斷bool值為True腕巡,則passassertFalse
:判斷bool值為False,則Pass使用方法:
assertTrue(expr,msg)
其中express
輸入相應(yīng)表達式血筑,如果表達式為真绘沉,則pass煎楣;msg
選填;斷言assertFalse
如果表達式為假车伞,則pass-
assertIsNone和assertIsNotNone
assertIsNone:不存在择懂,則pass
assertIsNotNone:存在,則pass
使用方法:
assertIsNone(obj,msg)
檢查某個元素是否存在-
總結(jié):
常用
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 2.7
assertIsNot(a, b) a is not b 2.7
assertIsNone(x) x is None 2.7
assertIsNotNone(x) x is not None 2.7
assertIn(a, b) a in b 2.7
assertNotIn(a, b) a not in b 2.7
assertIsInstance(a, b) isinstance(a, b) 2.7
assertNotIsInstance(a, b) not isinstance(a, b) 2.7
- 其它
assertAlmostEqual(a, b) round(a-b, 7) == 0
assertNotAlmostEqual(a, b) round(a-b, 7) != 0
assertGreater(a, b) a > b 2.7
assertGreaterEqual(a, b) a >= b 2.7
assertLess(a, b) a < b 2.7
assertLessEqual(a, b) a <= b 2.7
assertRegexpMatches(s, re) regex.search(s) 2.7
assertNotRegexpMatches(s, re) not regex.search(s) 2.7
assertItemsEqual(a, b) sorted(a) == sorted(b) and works with unhashable objs 2.7
assertDictContainsSubset(a, b) all the key/value pairs in a exist in b 2.7
assertMultiLineEqual(a, b) strings 2.7
assertSequenceEqual(a, b) sequences 2.7
assertListEqual(a, b) lists 2.7
assertTupleEqual(a, b) tuples 2.7
assertSetEqual(a, b) sets or frozensets 2.7
assertDictEqual(a, b) dicts 2.7
assertMultiLineEqual(a, b) strings 2.7
assertSequenceEqual(a, b) sequences 2.7
assertListEqual(a, b) lists 2.7
assertTupleEqual(a, b) tuples 2.7
assertSetEqual(a, b) sets or frozensets 2.7assertDictEqual(a, b) dicts 2.7
-
使用時機:
那么我們什么時候應(yīng)該使用斷言呢另玖?如果沒有特別的目的困曙,斷言應(yīng)該用于如下情況:
- 防御性的編程
- 運行時對程序邏輯的檢測
- 合約性檢查(比如前置條件,后置條件)
- 程序中的常量
- 檢查文檔
- 例:防御性編程中添加斷言
在代碼開始添加注釋是個好的開端谦去,但是人們都不太喜歡讀和更新這些注釋慷丽,這些注釋會很快變得過時。但對于斷言鳄哭,我們可以同時對這塊代碼編寫文檔要糊,如果這些斷言被違反了,會直接引起一個簡單而又直接的失敗窃诉。
assert target in(x, y, z)
if target ==x:
run_x_code()
elif target ==y:
run_y_code()
else:
assert target == z
run_z_code()