Python断言方法:assert
轉載地址:https://blog.csdn.net/qq_39247153/article/details/81082313
前言
在測試用例中,執行完測試用例后,最后一步是判斷測試結果是pass還是fail,自動化測試腳本里面一般把這種生成測試結果的方法稱為斷言(assert)。
用unittest組件測試用例的時候,斷言的方法還是很多的,下面介紹幾種常用的斷言方法:
assertEqual、assertIn、assertTrue
基本斷言方法
基本的斷言方法提供了測試結果是True還是False。所有的斷言方法都有一個msg參數,如果指定msg參數的值,則將該信息作為失敗的錯誤信息返回。
| 序號 | 斷言方法 | 斷言描述 |
| 1 | assertEqual(arg1, arg2, msg=None) | 驗證arg1=arg2,不等則fail |
| 2 | assertNotEqual(arg1, arg2, msg=None) | 驗證arg1!=arg2,相等則fail |
| 3 | assertTrue(expr, msg=None) | 驗證expr是true,如果為false,則fail |
| 4 | assertFalse(expr, msg=None) | 驗證expr是false,如果為true,則fail |
| 5 | assertIs(arg1, arg2, msg=None) | 驗證arg1=arg2是同一個對象,不是則fail |
| 6 | assertIsNot(arg1, arg2, msg=None) | 驗證arg1、arg2不是同一個對象,是則fail |
| 7 | assertIsNone(expr, msg=None) | 驗證expr是None,不是則fail |
| 8 | assertIsNotNone(expr,msg=None) | 驗證expr不是None,是則fail |
| 9 | assertIn(arg1, arg2, msg=None) | 驗證arg1是arg2的子串,不是則fail |
| 10 | assertNotIn(arg1, arg2, msg=None) | 驗證arg1不是arg2的子串,是則fail |
| 11 | assertIsInstance(obj, cls, msg=None) | 驗證obj是cls的實例,不是則fail |
| 12 | assertNotIsInstance(obj, cls, msg=None) | 驗證obj不是cls的實例,是則fail |
一、簡單案例
? 1.下面寫了4個case,其中第四個是執行失敗的
# coding:utf-8 import unittest class Test(unittest.TestCase):def test01(self):"'判斷a == b'"a = 1b = 1self.assertEqual(a, b)def test02(self):"'判斷a in b'"a = "hello"b = "hello world!"self.assertIn(a, b)def test03(self):"'判斷a is True'"a = Trueself.assertTrue(a)def test04(self):"'失敗案例'"a = "上海 - 悠悠"b = "yoyo"self.assertEqual(a, b)if __name__ == "__main__":unittest.main()? ?2.執行結果如下:
Failure
Expected :'\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0'
Actual?? :'yoyo'
?<Click to see difference>
Traceback (most recent call last):
??File "D:\test\yoyotest\kecheng\test12.py", line 27, in test04
????self.assertEqual(a, b)
AssertionError: '\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0' != 'yoyo'
?
3.執行的結果,中文的編碼不對,沒正常顯示中文,遇到這種情況,可以自定義異常輸出
二、自定義異常
1.以assertEqual為例分析:
? assertEqual(self, first, second, msg=None)
? ? ?Fail if the two objects are unequal as determined by the '==' operator.
2.翻譯: 如果兩個對象不能相等,就返回失敗,相當于return:first == second
3.這里除了相比較的兩個參數first和second,還有第三個參數msg=None,這個msg參數就是遇到異常自定義輸出信息
三、unittest常用的斷言方法
? 1.assertEqual(self, first, second, msg=None)
? ? --判斷兩個參數相等: first == second
? 2.assertNotEqual(self, first, second, msg=None)
? ? --判斷兩個參數不相等: first != second
? 3.assertIn(self, member, container, msg=None)
? ?--判斷兩個字符串是否包含: member in container
? 4.assertNotIn(self, member, container, msg=None)
? --判斷字符串是否不包含: member not in container
? 5.assertTrue(self, expr, msg=None)
? --判斷是否為真: expr is True
? 6.assertFalse(self, expr, msg=None)
? --判斷是否為假:expr is False
? 7.assertIsNone(self, obj, msg=None)
? --判斷是否為None:obj is None
? 8.assertIsNotNone(self, obj, msg=None)
? --判斷是否不為None: obj is Not None?
四、unittest所有斷言方法
? 1.下面是unittest框架支持的所有斷言方法,有興趣的同學可以慢慢看。
|? assertAlmostEqual(self, first, second, places=None, msg=None, delta=None) |????? Fail if the two objects are unequal as determined by their |????? difference rounded to the given number of decimal places |????? (default 7) and comparing to zero, or by comparing that the |????? between the two objects is more than the given delta. |???? ? |????? Note that decimal places (from zero) are usually not the same |????? as significant digits (measured from the most signficant digit). |???? ? |????? If the two objects compare equal then they will automatically |????? compare almost equal. | ? |? assertAlmostEquals = assertAlmostEqual(self, first, second, places=None, msg=None, delta=None) | ? |? assertDictContainsSubset(self, expected, actual, msg=None) |????? Checks whether actual is a superset of expected. | ? |? assertDictEqual(self, d1, d2, msg=None) | ? |? assertEqual(self, first, second, msg=None) |????? Fail if the two objects are unequal as determined by the '==' |????? operator. | ? |? assertEquals = assertEqual(self, first, second, msg=None) | ? |? assertFalse(self, expr, msg=None) |????? Check that the expression is false. | ? |? assertGreater(self, a, b, msg=None) |????? Just like self.assertTrue(a > b), but with a nicer default message. | ? |? assertGreaterEqual(self, a, b, msg=None) |????? Just like self.assertTrue(a >= b), but with a nicer default message. | ? |? assertIn(self, member, container, msg=None) |????? Just like self.assertTrue(a in b), but with a nicer default message. | ? |? assertIs(self, expr1, expr2, msg=None) |????? Just like self.assertTrue(a is b), but with a nicer default message. | ? |? assertIsInstance(self, obj, cls, msg=None) |????? Same as self.assertTrue(isinstance(obj, cls)), with a nicer |????? default message. | ? |? assertIsNone(self, obj, msg=None) |????? Same as self.assertTrue(obj is None), with a nicer default message. | ? |? assertIsNot(self, expr1, expr2, msg=None) |????? Just like self.assertTrue(a is not b), but with a nicer default message. | ? |? assertIsNotNone(self, obj, msg=None) |????? Included for symmetry with assertIsNone. | ? |? assertItemsEqual(self, expected_seq, actual_seq, msg=None) |????? An unordered sequence specific comparison. It asserts that |????? actual_seq and expected_seq have the same element counts. |????? Equivalent to:: |???? ? |????????? self.assertEqual(Counter(iter(actual_seq)), |?????????????????????????? Counter(iter(expected_seq))) |???? ? |????? Asserts that each element has the same count in both sequences. |????? Example: |????????? - [0, 1, 1] and [1, 0, 1] compare equal. |????????? - [0, 0, 1] and [0, 1] compare unequal. | ? |? assertLess(self, a, b, msg=None) |????? Just like self.assertTrue(a < b), but with a nicer default message. | ? |? assertLessEqual(self, a, b, msg=None) |????? Just like self.assertTrue(a <= b), but with a nicer default message. | ? |? assertListEqual(self, list1, list2, msg=None) |????? A list-specific equality assertion. |???? ? |????? Args: |????????? list1: The first list to compare. |????????? list2: The second list to compare. |????????? msg: Optional message to use on failure instead of a list of |????????????????? differences. | ? |? assertMultiLineEqual(self, first, second, msg=None) |????? Assert that two multi-line strings are equal. | ? |? assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None) |????? Fail if the two objects are equal as determined by their |????? difference rounded to the given number of decimal places |????? (default 7) and comparing to zero, or by comparing that the |????? between the two objects is less than the given delta. |???? ? |????? Note that decimal places (from zero) are usually not the same |????? as significant digits (measured from the most signficant digit). |???? ? |????? Objects that are equal automatically fail. | ? |? assertNotAlmostEquals = assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None) | ? |? assertNotEqual(self, first, second, msg=None) |????? Fail if the two objects are equal as determined by the '!=' |????? operator. | ? |? assertNotEquals = assertNotEqual(self, first, second, msg=None) | ? |? assertNotIn(self, member, container, msg=None) |????? Just like self.assertTrue(a not in b), but with a nicer default message. | ? |? assertNotIsInstance(self, obj, cls, msg=None) |????? Included for symmetry with assertIsInstance. | ? |? assertNotRegexpMatches(self, text, unexpected_regexp, msg=None) |????? Fail the test if the text matches the regular expression. | ? |? assertRaises(self, excClass, callableObj=None, *args, **kwargs) |????? Fail unless an exception of class excClass is raised |????? by callableObj when invoked with arguments args and keyword |????? arguments kwargs. If a different type of exception is |????? raised, it will not be caught, and the test case will be |????? deemed to have suffered an error, exactly as for an |????? unexpected exception. |???? ? |????? If called with callableObj omitted or None, will return a |????? context object used like this:: |???? ? |?????????? with self.assertRaises(SomeException): |?????????????? do_something() |???? ? |????? The context manager keeps a reference to the exception as |????? the 'exception' attribute. This allows you to inspect the |????? exception after the assertion:: |???? ? |????????? with self.assertRaises(SomeException) as cm: |????????????? do_something() |????????? the_exception = cm.exception |????????? self.assertEqual(the_exception.error_code, 3) | ? |? assertRaisesRegexp(self, expected_exception, expected_regexp, callable_obj=None, *args, **kwargs) |????? Asserts that the message in a raised exception matches a regexp. |???? ? |????? Args: |????????? expected_exception: Exception class expected to be raised. |????????? expected_regexp: Regexp (re pattern object or string) expected |????????????????? to be found in error message. |????????? callable_obj: Function to be called. |????????? args: Extra args. |????????? kwargs: Extra kwargs. | ? |? assertRegexpMatches(self, text, expected_regexp, msg=None) |????? Fail the test unless the text matches the regular expression. | ? |? assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None) |????? An equality assertion for ordered sequences (like lists and tuples). |???? ? |????? For the purposes of this function, a valid ordered sequence type is one |????? which can be indexed, has a length, and has an equality operator. |???? ? |????? Args: |????????? seq1: The first sequence to compare. |????????? seq2: The second sequence to compare. |????????? seq_type: The expected datatype of the sequences, or None if no |????????????????? datatype should be enforced. |????????? msg: Optional message to use on failure instead of a list of |????????????????? differences. | ? |? assertSetEqual(self, set1, set2, msg=None) |????? A set-specific equality assertion. |???? ? |????? Args: |????????? set1: The first set to compare. |????????? set2: The second set to compare. |????????? msg: Optional message to use on failure instead of a list of |????????????????? differences. |???? ? |????? assertSetEqual uses ducktyping to support different types of sets, and |????? is optimized for sets specifically (parameters must support a |????? difference method). | ? |? assertTrue(self, expr, msg=None) |????? Check that the expression is true. | ? |? assertTupleEqual(self, tuple1, tuple2, msg=None) |????? A tuple-specific equality assertion. |???? ? |????? Args: |????????? tuple1: The first tuple to compare. |????????? tuple2: The second tuple to compare. |????????? msg: Optional message to use on failure instead of a list of |????????????????? differences.轉:https://www.cnblogs.com/yoyoketang/p/6691270.html
總結
以上是生活随笔為你收集整理的Python断言方法:assert的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3快速入门----(3) d
- 下一篇: os.system如何传参