在独立的pytest测试中使用unittest kind断言(如assertNotIn)的最佳实践?

thi*_*ybk 3 python testing pytest python-unittest

在独立pytest测试用例中,我想使用断言unittest.TestCase.assertNotIn(和unittest其他断言),而不依赖任何uniittest模块。使用python-assert之类的库是最佳实践吗?

hoe*_*ing 5

最佳做法是使用language assert语句,该语句无需使用unittestassert*方法。比较

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性。这也是docspytest命名的关键功能之一:

有关失败的断言语句的详细信息(无需记住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)

等等