使用断言式测试在Python中隔离单元测试的规范方法是什么?

时间:2014-06-02 14:47:54

标签: python unit-testing tdd bdd

我最近问了这个question,并意识到我还想知道是否有办法通过断言式测试实现'期望'隔离。我复制并粘贴了一个关于'期望'隔离的简单例子。

我相对较新的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

单元测试/断言式

test_foo.py

 class Foo():
     def test_bar(x):
         x = 3
         self.assertEqual(4)
         x = None
         self.assertRaises(Error)

1 个答案:

答案 0 :(得分: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())