питон; monkeypatch в pytest setup_module - PullRequest
0 голосов
/ 27 марта 2020

Мой вопрос похож на, но не является дубликатом: Как использовать 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()

Есть ли способ добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...