如何使用公共pytestfixture作为上下文管理器?

2024-05-12 21:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个测试框架的数百个脚本。每一个脚本都需要打开一个连接到我们正在测试的设备,运行许多任务并关闭。正在通过固定装置创建和关闭连接。还想添加一个新的连接需要为每一个单独的脚本运行(即模块级,而不是作用域或函数级)。在

我有一个固定装置在同一个文件中的任务。像这样。在

我的_测试.py

...
@pytest.fixture(scope='module')
def setup(request):
    global connection
    with target.Connect() as connection:
        yield connection

    def teardown():
        connection.close
    request.addfinalizer(teardown)

@pytest.mark.usefixtures("setup")
def test_query_device_info():
    global connection
    connection.write('echo $PATH')
    connection.write('echo $HOME')
    ...

由于我有数百个测试,我不想为每个文件复制相同的代码,所以我需要一个可以被每个测试使用的通用夹具。我试着把这个装置加到conftest.py正在创建连接,但当它到达连接.写入命令。在

conftest.py

^{pr2}$

我的_测试.py

...
@pytest.mark.usefixtures("setup")
def test_query_device_info():
    global connection
    connection.write('echo $PATH')

如何将这个fixture放在所有测试都可以访问的公共位置,并正确地创建一个可以在脚本中使用的连接?在

请注意,这些是通过pyCharm IDE执行的,而不是直接在命令行上执行的。在


Tags: 文件pyecho脚本pytestrequestdefsetup