Я пытаюсь использовать pytest-xdist для того, чтобы мои тесты выполнялись параллельно. Проблема в том, что каждый поток обращается к устройству, которое используется для всех тестов, и выполняет его в соответствии с номером потока.
Это вызывает у меня проблему, потому что эта роль фикстора заключается в создании данных для моих тестов, и как только они уже созданы, я получаю и ошибку, так как она уже создана (через REST).
conftest.py:
lock = threading.Lock()
@pytest.fixture(scope=session)
def init_data(request):
lock.acquire()
try:
data = []
if checking_data_not_created():
data.append(some_rest_command_creating_data_1())
data.append(some_rest_command_creating_data_2())
finally:
lock.release()
yield data
lock.acquire()
try:
remove_all_data()
finally:
lock.release()
tests_class.py:
class classTests():
def first_test(init_data):
test body and validation....
def second_test(init_data):
test body and validation....
Я использую команду: pytest -v -n2
Предполагается, что 1-й поток должен запустить first_test (), а 2-й поток должен запустить second_test () один из них всегда будет терпеть неудачу, потому что первый уже создал данные в секции фикстур, а другой поток получит исключение, и все тесты, которые он должен выполнить, не пройдут.
Как видите, я пытался использовать блокировку вчтобы синхронизировать потоки, но это также не работает.
есть идеи, как мне решить эту проблему?
Спасибо.