У меня есть несколько pytests, которые имеют доступ к арматуре, объем которой равен module
. Я хочу переместить дублированные части тестов в обычное место и получить доступ к нему оттуда.pytest: переместите общую установку светильника в одно место
В частности, в приведенном ниже примере кода в 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()
...
Вы говорите, что «не смогли заставить его работать» - какие проблемы вы столкнулись, в частности? – jwd
См. Также: http://stackoverflow.com/questions/33508060/create-and-import-helper-functions-in-tests-without-creating-packages-in-test-di – jwd