在Python中使用断言风格测试隔离单元测试的标准方法是什么?

4 投票
1 回答
1402 浏览
提问于 2025-04-18 08:17

我最近在这里提了一个问题,发现我还想知道有没有办法在使用断言风格的测试中实现“期望”隔离。我复制粘贴了一个简单的例子,来说明我所说的“期望”隔离。

我对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())

撰写回答