thi*_*ybk 3 python testing pytest python-unittest
在独立pytest测试用例中,我想使用断言unittest.TestCase.assertNotIn(和unittest其他断言),而不依赖任何uniittest模块。使用python-assert之类的库是最佳实践吗?
最佳做法是使用language assert语句,该语句无需使用unittest的assert*方法。比较
self.assertNotIn(a, b, 'element a is not found in sequence b')
Run Code Online (Sandbox Code Playgroud)
与
assert a not in b, 'element a is not found in sequence b'
Run Code Online (Sandbox Code Playgroud)
后者更具Python性。这也是docs中pytest命名的关键功能之一:
有关失败的断言语句的详细信息(无需记住
self.assert*名称)
如果您缺少任何unittest方法,pytest力图为他们提供替代品:
with self.assertRaises(Exception):
spam()
Run Code Online (Sandbox Code Playgroud)
变成
with pytest.raises(Exception):
spam()
Run Code Online (Sandbox Code Playgroud)
,
self.assertAlmostEqual(a, b)
Run Code Online (Sandbox Code Playgroud)
变成
assert a == pytest.approx(b)
Run Code Online (Sandbox Code Playgroud)
等等