我有一些pytests都可以访问范围为module
的灯具。我想将测试的重复部分移动到一个公共位置并从那里访问它。
具体来说,在下面的示例代码中,在test/test_blah.py
中,每个测试方法都有变量dsn
,这是被测设备的序列号。我无法弄清楚如何提取这个常用代码。我尝试访问dut
中的TestBase
,但无法使其正常运行。
# my_pytest/__init__.py
import pytest
@pytest.fixture(scope="module")
def device_fixture(request):
config = getattr(request.module, 'config', {})
device = get_device(config.get('dsn'))
assert device is not None
return device
...some other code...
# test/base.py
class TestBase:
def common_method_1(self):
pass
def common_method_2(self):
pass
# test/test_blah.py
from base import TestBase
import my_pytest
from my_pytest import device_fixture as dut #'dut' stands for 'device under test'
class TestBlah(TestBase):
def test_001(self, dut):
dsn = dut.get_serialno()
...
# how to extract the dsn = dut.get_serialno() into
# something common so I can keep these tests more DRY?
def test_002(self, dut):
dsn = dut.get_serialno()
...
def test_003(self, dut):
dsn = dut.get_serialno()
...
答案 0 :(得分:1)
如果我正确理解你的问题:将你的灯具放在conftest.py
中,它们将可用作你的测试功能的参数。无需导入任何内容,只需定义
@pytest.fixture(scope='module')
def dut():
return 'something'