1 阐明
- pytest中应用assert进行断言,和unittest是有区别的,后边具体列举;
- pytest中的assert后能够为表达式,为True示意用例通过。
2 Uinttest中的断言
2.1 局部断言
- 咱们写一个class,代码中就能够看到所有的断言:
- 罕用断言:
办法 | 查看 |
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) |
assertNotIsInstance(a, b) | not isinstance(a,b) |
2.2 局部举例
# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2021/11/26 # 文件名称:test_unint.py# 作用:unittest断言# 分割:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelsonimport unittestclass TestU(unittest.TestCase): def setUp(self) -> None: self.a = 3 self.b = 4 self.c = 3 self.d = 0 def tearDown(self) -> None: pass def test_o(self): self.assertTrue(self.c, msg="后果为False") def test_t(self): self.assertEqual(self.a, self.c, msg="a和c不相等")if __name__ == "__main__": unittest.main()
3 Pytest断言
3.1 罕用断言
断言 | 阐明 |
---|
assert a | 判断 a为真 |
assert not a | 判断 a不为真 |
assert a in b | 判断 b 蕴含 a |
assert a == b | 判断 a 等于 b |
assert a != b | 判断 a 不等于 b |
3.2 示意办法
# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2021/11/26 # 文件名称:test_assert.py# 作用:assert断言# 分割:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelsonimport pytestclass TestU(): def test_f(self): a = 3 b = 4 s = a + b return s def test_func(self): assert self.test_f() == 7, "计算结果不是7"if __name__ == "__main__": pytest.main()
(venv) F:\pytest_study\test_case\test_d>pytest test_assert.py============================================ test session starts =============================================platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1rootdir: F:\pytest_study\test_case\test_dplugins: allure-pytest-2.8.12, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6, xdist-1.31.0collected 2 itemstest_assert.py .. [100%]============================================= 2 passed in 0.31s ==============================================
3.3 异样断言
- 能够应用 pytest.raises 作为上下文管理器,当抛出异样时能够获取到对应的异样实例;
- 目标是断言抛出的异样是不是预期想要的;
- 比方如下,断言
1 / 0
的异样是不是ZeroDivisionError
,其中ZeroDivisionError
是异样类型,用type
从异样信息中获取;division by zero
是异样的值,应用value
从异样信息中获取。
def test_a(self): with pytest.raises(ZeroDivisionError) as e: 1 / 0 assert e.type == ZeroDivisionError assert "division by zero" in str(e.value)