pytest - 是否可以在所有测试脚本之间 运行 a script/command?

pytest - is it possible to run a script/command between all test scripts?

好的,这绝对是我的错,但我需要清理它。我的一个测试脚本相当一致地(但并非总是)更新我的数据库,而这会导致其他人出现问题(基本上,它会剥夺测试用户对测试数据库的访问权限)。

我可以通过 运行 在每个单独的测试之后或每个测试脚本完成后进行简单查询,轻松找出导致此问题的脚本。

pytestnose2 会执行以下操作:

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,因此两者都可以选择。

编辑:这不是测试数据库,或固定装置加载的数据库。这是许多极其复杂的实时数据库和测试套件中的任何一个的快照,根据其设计,应该内省数据库并弄清楚如何 运行 它的测试(几乎所有访问都是只读)。这很好用并且至少在我的特定上下文中有很多有益的方面,但这也意味着我没有可以使用的拆解或固定加载。

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