pytest - 是否可以在所有测试脚本之间运行脚本/命令?

问题描述 投票:1回答:1

好的,这绝对是我的错,但我需要清理它。我的一个测试脚本相当一致(但并不总是)以一种导致其他人出现问题的方式更新我的数据库(基本上,它会将测试用户的访问权限带到测试数据库)。

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

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,所以要么是一个选项。

编辑:这不是测试数据库,也不是夹具加载的数据库。这是许多极其复杂的实时数据库中的任何一个的快照,根据其设计,测试套件应该内省数据库并找出如何运行其测试(几乎所有访问都是只读的) 。这个工作正常,至少在我的特定环境中有许多有益的方面,但它也意味着没有tearDown或fixture-load供我使用。

python pytest nose
1个回答
3
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.