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

时间:2019-04-03 01:24:04

标签: python pytest nose

好的,这绝对是我的错,但是我需要清理一下。我的一个测试脚本相当一致地(但不是总是)以一种引起其他问题的方式更新我的数据库(基本上,它剥夺了测试用户对测试数据库的访问权限)。

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

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和鼻子2上使用,因此可以选择其中一个。

编辑:不是测试数据库或夹具加载的数据库。这是许多极其复杂的实时数据库中任何一个的快照,并且根据其设计,测试套件应该能够对数据库进行内部检查并弄清楚如何运行其测试(几乎所有访问都是只读的) 。这项工作正常,至少在我的特定情况下具有许多有益的方面,但这也意味着我无需使用任何拆解程序或固定装置。

1 个答案:

答案 0 :(得分:2)

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