在Python中使用断言风格测试隔离单元测试的标准方法是什么?
我最近在这里提了一个问题,发现我还想知道有没有办法在使用断言风格的测试中实现“期望”隔离。我复制粘贴了一个简单的例子,来说明我所说的“期望”隔离。
我对Python还比较陌生,之前主要用Ruby和JavaScript,像Rspec和Jasmine这样的测试库让我能够在测试单个函数时隔离“期望”。因为在Python中似乎没有一个活跃维护的“期望”风格的库,我想知道是否可以用unittest或pytest(我了解的Python中最流行的两个测试库)实现类似的测试风格。
foo.py
class Foo():
def bar(self, x):
return x + 1
期望风格/描述它
test_foo.py
describe Foo:
describe self.bar:
before_each:
f = Foo()
it 'returns 1 more than its arguments value':
expect f.bar(3) == 4
it 'raises an error if no argument is passed in':
expect f.bar() raiseError
Unittest/断言风格
test_foo.py
class Foo():
def test_bar(x):
x = 3
self.assertEqual(4)
x = None
self.assertRaises(Error)
1 个回答
1
这个 unittest
模块是标准库的一部分。
class TestFoo(unittest.TestCase):
def setUp(self):
self.f = Foo()
def test_bar(self):
self.assertEqual(self.f.bar(3), 4)
def test_missing_argument(self):
self.assertRaises(TypeError, self.f.bar())