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)