[轉]python_常用斷言assert
阿新 • • 發佈:2017-08-25
shu sin con 其中 rtg work lee 一個 後置
原文地址:http://www.jianshu.com/p/eea0b0e432da
python自動化測試中尋找元素並進行操作,如果在元素好找的情況下,相信大家都可以較熟練地編寫用例腳本了,但光進行操作可能還不夠,有時候也需要對預期結果進行判斷。
-
常用
-
這裏介紹幾個常用斷言的使用方法,可以一定程度上幫助大家對預期結果進行判斷。
-
assertEqual
assertNotEqual
assertTrue
assertFalse
assertIsNone
assertIsNotNone
-
assertEqual 和 assertNotEqual
assertEqual
:如兩個值相等,則passassertNotEqual
:如兩個值不相等,則pass- 使用方法:
assertEqual(first,second,msg)
其中first
與second
進行比較,如果相等則通過;msg
為失敗時打印的信息,選填;斷言assertNotEqual反著用就可以了。
-
assertTrue和assertFalse
-
assertTrue
:判斷bool值為True,則pass -
assertFalse
:判斷bool值為False,則Pass - 使用方法:
assertTrue(expr,msg)
其中express
輸入相應表達式,如果表達式為真,則pass;msg
選填;斷言assertFalse
-
-
assertIsNone和assertIsNotNone
- assertIsNone:不存在,則pass
- assertIsNotNone:存在,則pass
- 使用方法:
assertIsNone(obj,msg)
檢查某個元素是否存在
-
總結:
- 常用
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
其它
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
-
使用時機:
那麽我們什麽時候應該使用斷言呢?如果沒有特別的目的,斷言應該用於如下情況:- 防禦性的編程
- 運行時對程序邏輯的檢測
- 合約性檢查(比如前置條件,後置條件)
- 程序中的常量
- 檢查文檔
- 例:防禦性編程中添加斷言
在代碼開始添加註釋是個好的開端,但是人們都不太喜歡讀和更新這些註釋,這些註釋會很快變得過時。但對於斷言,我們可以同時對這塊代碼編寫文檔,如果這些斷言被違反了,會直接引起一個簡單而又直接的失敗。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()
-
-
[轉]python_常用斷言assert