首页 > 解决方案 > 如何在 pytest 测试套件中跨类使用作为会话范围固定装置的对象?

问题描述

编辑:删除 unittest(python 单元测试)解决了我的问题。如果您混合使用 pytest 和 unittest,Python unittest 可能会导致您的设备失败。我从我的测试类层次结构中的 unittest.TestCase 继承。

我在 conftest.py 中有我的会话范围夹具:

@pytest.fixture(scope="session", autouse=True)
def test_client():
    <SETUP>
    client = Client(protocol)
    return client

我想在几个测试类中使用这个夹具向 TCP 服务器发送请求:

@pytest.mark.usefixture('test_client')
class TestCases(BaseTest):
    ...
    def test_case_m(self, test_client):
        ....
        results = test_client.query("bananas")
    ....

如何将会话范围的固定装置定义为对象,然后如何访问每个类中的固定装置?

我已经尝试了六种装饰器组合,并在会话范围夹具中使用了 return/yield。不幸的是,我似乎无法使会话范围固定装置可用,无法在 pytest 上找到任何文档,也无法找到解决此问题的先前堆栈溢出帖子。什么是正确的模式?pytest 如何使对象可用?我真的很想知道在 pytest 中附加装饰器的目的,这对我来说似乎是伏都教。

标签: pythonpytestpython-unittestfixtures

解决方案


推荐阅读