1. 程式人生 > >python_常用斷言assert

python_常用斷言assert

python自動化測試中尋找元素並進行操作,如果在元素好找的情況下,相信大家都可以較熟練地編寫用例指令碼了,但光進行操作可能還不夠,有時候也需要對預期結果進行判斷。

  • 常用

  • 這裡介紹幾個常用斷言的使用方法,可以一定程度上幫助大家對預期結果進行判斷。-

  • assertEqual

  • assertNotEqual

  • assertTrue

  • assertFalse

  • assertIsNone

  • assertIsNotNone

  • assertEqual 和 assertNotEqual

  • assertEqual:如兩個值相等,則pass

  • assertNotEqual:如兩個值不相等,則pass

  • 使用方法:
    assertEqual(first,second,msg)其中firstsecond進行比較,如果相等則通過;msg為失敗時列印的資訊,選填;斷言assertNotEqual反著用就可以了。

  • assertTrue和assertFalse

  • assertTrue:判斷bool值為True,則pass

  • assertFalse:判斷bool值為False,則Pass

  • 使用方法:
    assertTrue(expr,msg)其中express輸入相應表示式,如果表示式為真,則pass;msg

    選填;斷言assertFalse如果表示式為假,則pass

  • 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 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
  • 使用時機:

那麼我們什麼時候應該使用斷言呢?如果沒有特別的目的,斷言應該用於如下情況:

  • 防禦性的程式設計
  • 執行時對程式邏輯的檢測
  • 合約性檢查(比如前置條件,後置條件)
  • 程式中的常量
  • 檢查文件
  • 例:防禦性程式設計中新增斷言
    在程式碼開始添加註釋是個好的開端,但是人們都不太喜歡讀和更新這些註釋,這些註釋會很快變得過時。但對於斷言,我們可以同時對這塊程式碼編寫文件,如果這些斷言被違反了,會直接引起一個簡單而又直接的失敗。
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()

     JUnit的各種斷言

           JUnit提供了一些輔助函式,用於幫助你確定某個被測試函式是否工作正常。通常而言,我們把所有這些函式統稱為斷言。斷言是單元測試最基本的組成部分。

           1. assertEquals([String message], expected,actual)

            比較兩個基本型別或物件是否相等(expected和actual是原始型別數值(primitive value)或者必須為實現比較而具有equal方法);

           2.assertFalse([String message],boolean condition)

            對布林值求值,看它是否為“真“;

           3.assertTrue([String message],boolean condition)

            對布林值求值,看它是否為“假“;

           4.assertNull([String message],java.lang.Object object)

            檢查物件是否為“空“;

           5.assertNotNull([String message],java.lang.Object object)

            檢查物件是否不為“空”;

           6.assertSame([String message],expected,actual)

            檢查兩個物件是否為同一例項;

           7.assertNotSame([String message],expected,actual)

            檢查兩個物件是否不為同一例項;

           8. fail( String message )

            使測試立即失敗,其中 message 引數使可選的。這種斷言通常被用於標記某個不應該到達的分支(例如,在一個預期發生的異常之後)