pytest - возможно ли запустить скрипт / команду между всеми тестовыми скриптами? - PullRequest
1 голос
/ 03 апреля 2019

ОК, это определенно моя вина, но мне нужно ее почистить. Один из моих тестовых сценариев довольно последовательно (но не всегда) обновляет мою базу данных таким образом, что это создает проблемы для других (в основном, это забирает права доступа для тестового пользователя к тестовой базе данных).

Я мог бы легко выяснить, какой скрипт вызывает это, выполнив простой запрос, либо после каждого отдельного теста, либо после завершения каждого скрипта.

т.е. pytest или nose2 сделает следующее:

run test_aaa.py
run check_db_access.py  #ideal if I could induce a crash/abort
run test_bbb.py
run check_db_access.py
...

Вы поняли идею. Есть ли встроенная опция или плагин, который я могу использовать? Набор тестов в настоящее время работает как на pytest, так и на nose2, поэтому любой из них является опцией.

Редактировать: это , а не тестовый дБ или дБ, загруженный прибором. Это снимок любой из ряда чрезвычайно сложных действующих баз данных, и набор тестов, согласно его структуре, должен анализировать базы данных и выяснять, как выполнять ее тесты (почти весь доступ только для чтения) , Это прекрасно работает и имеет много полезных аспектов, по крайней мере, в моем конкретном контексте, но это также означает, что у меня нет tearDown или fixture-load для меня.

1 Ответ

3 голосов
/ 03 апреля 2019
import pytest

@pytest.fixture(autouse = True)
def wrapper(request):
    print('\nbefore: {}'.format(request.node.name))
    yield
    print('\nafter: {}'.format(request.node.name))

def test_a():
    assert True

def test_b():
    assert True

Пример вывода:

$ pytest -v -s test_foo.py

test_foo.py::test_a
before: test_a
PASSED
after: test_a

test_foo.py::test_b
before: test_b
PASSED
after: test_b
...