Мой вопрос похож на, но не является дубликатом: Как использовать monkeypatch в методе "setup" для юнит-тестов с использованием pytest? . Этот OP не использует pytest setup_module
Так что pytest предоставляет setup_module
и teardown_module
(do c: https://docs.pytest.org/en/latest/xunit_setup.html#module -level-setup-teardown ). Однако, они, кажется, не принимают приспособления pytest.
Мне нужно обезопасить объект для нескольких тестов; он должен быть исправлен, «запущен», затем использован в куче тестов, а затем остановлен. Это на самом деле не вариант использования для приборов, так как это многопоточное приложение, и мы тестируем его на работающее приложение.
Сейчас я провожу серию тестов, которые не могут быть запущены параллельно , поскольку все они зависят от первого теста, пытаясь взломать setup_module
:
def test_1_must_come_first(monkeypatch, somefixture...):
# patch my thing
monkeypatch.setattr("mything.init_func", somefixture)
mything.start()
def test_2()
# use mything
def test_3()
# use mything
...
def teardown_module():
mything.stop()
Вместо этого я хотел бы переместить исправление на первом шаге, чтобы сами тесты могли выполняться параллельно и независимо от них:
def setup_module(monkeypatch, somefixture):
monkeypatch.setattr("mything.init_func", somefixture)
mything.start()
def test_1():
# use mything
def test_2()
# use mything
# NO LONGER AN ORDERING DEPENDENCY AMONG TESTS
...
def teardown_module():
mything.stop()
Есть ли способ добиться этого?