0

在组织测试时PyTest,我看到可以在测试类中定义测试方法,如下所示:

class TestBasicEquality:
    def test_a_equals_b(self):
        assert 'a' == 'b'

如果我们想编写一个test_client必须使用 PyTest 夹具的测试(),client我们可以这样做:

def test_client(client):
    # assert client.something == something

但是我们如何组织test_client一个测试类呢?我尝试将@pytest.mark.usefixtures(client)其用作测试类的装饰器,但没有成功。

有人可以展示如何和/或指向指南/文档以供我理解吗?

也许这一切背后隐藏着一个问题:我们什么时候应该(或不应该)将 pytest 测试放在一个类中?(现在才开始学习 PyTest..)?

4

1 回答 1

1

在您给定的情况下,您只需将夹具作为另一个方法参数包含在内:

class TestSomething:
    def test_client(self, client):
        assert client.something == "something"

那么这些课程有什么好处呢?就个人而言,我很少需要将它们与 pytest 一起使用,但您可以例如将它们用于:

  1. 在一个文件中制作一组测试,并且只能运行一组:pytest ./tests/test.py::TestSomething
  2. 为每个测试方法执行一个夹具,而这些方法不一定需要访问夹具本身。文档中的一个示例是每个方法之前的自动清理。那就是@pytest.mark.usefixtures()你发现的。
  3. 通过将夹具的范围定义为:class@pytest.fixture(scope="class", autouse=True)
于 2019-10-31T06:37:39.070 回答