我将数百个测试脚本添加到正在创建的pytest框架中。每个脚本都需要打开与我们正在测试的设备的连接,运行许多任务并关闭。正在通过固定装置创建和关闭连接。还想补充一点,需要为每个运行的脚本(即模块级别,而不是作用域或功能级别)建立新的连接。
我在与任务相同的文件中使用固定装置。像这样的东西。
my_test.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中,并且正在创建连接,但是当它到达connection.write命令时失败。
conftest.py
...
@pytest.fixture
def setup(request):
global connection
with target.Connect() as connection:
yield connection
def teardown():
connection.close
request.addfinalizer(teardown)
my_test.py
...
@pytest.mark.usefixtures("setup")
def test_query_device_info():
global connection
connection.write('echo $PATH')
如何在所有测试均可访问的公共位置安装此灯具,并正确创建可在脚本中使用的连接?
请注意,这些是通过pyCharm IDE执行的,而不是直接在命令行上执行的。
答案 0 :(得分:0)
该框架经过重新设计,以使连接是通过使用__enter__
和__exit__
方法的类来完成的,这些方法自动控制上下文。