pytest - 是否可以在所有测试脚本之间 运行 a script/command?
pytest - is it possible to run a script/command between all test scripts?
好的,这绝对是我的错,但我需要清理它。我的一个测试脚本相当一致地(但并非总是)更新我的数据库,而这会导致其他人出现问题(基本上,它会剥夺测试用户对测试数据库的访问权限)。
我可以通过 运行 在每个单独的测试之后或每个测试脚本完成后进行简单查询,轻松找出导致此问题的脚本。
即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,因此两者都可以选择。
编辑:这不是测试数据库,或固定装置加载的数据库。这是许多极其复杂的实时数据库和测试套件中的任何一个的快照,根据其设计,应该内省数据库并弄清楚如何 运行 它的测试(几乎所有访问都是只读)。这很好用并且至少在我的特定上下文中有很多有益的方面,但这也意味着我没有可以使用的拆解或固定加载。
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
好的,这绝对是我的错,但我需要清理它。我的一个测试脚本相当一致地(但并非总是)更新我的数据库,而这会导致其他人出现问题(基本上,它会剥夺测试用户对测试数据库的访问权限)。
我可以通过 运行 在每个单独的测试之后或每个测试脚本完成后进行简单查询,轻松找出导致此问题的脚本。
即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,因此两者都可以选择。
编辑:这不是测试数据库,或固定装置加载的数据库。这是许多极其复杂的实时数据库和测试套件中的任何一个的快照,根据其设计,应该内省数据库并弄清楚如何 运行 它的测试(几乎所有访问都是只读)。这很好用并且至少在我的特定上下文中有很多有益的方面,但这也意味着我没有可以使用的拆解或固定加载。
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