每个pytest函数后运行公共检查代码

时间:2018-03-23 13:44:06

标签: pytest fixtures

这个问题看起来有些重复,但是这些只是解决了实施拆解的问题,但是在测试完成并做出判决之前我不想这样做。在此之后,Teardown就开始了!

我想对我的所有测试功能进行检查。 如果记录了一些不好的东西,那么应该调用pytest.fail。

到目前为止,我已经在终结器拆解中使用了自动夹具。 但是在pytest将测试用例标记为已通过后执行此代码。 使用@ pytest.yield_fixture

时遇到同样的问题

在所有测试函数上放置装饰器可能

@commoncheck
def test_xxx()

但它有很多测试功能要装饰。 这个技巧可以完成

for fn in dir() :
    if fn.startswith('test'):
        locals()[fn] = commoncheck(locals()[fn])

但到目前为止,我需要将其放在每个测试模块的最后。 并且在测试中增加了固定装置,我还没想到。

我的想法已经不多了。我还没能找到在测试功能之后但在报告之前执行的pytest灯具。

有什么想法吗?

修改<!/强> 这段代码完成了我想要的大部分内容。

import mycheck,pytest

@pytest.fixture
def x():
    return 0

def test_t1(x):
    assert 1 == 1

def test_t2():
    assert 1 == 1

# These three lines needs to be in every test module file
for fn in dir() :
    if fn.startswith('test'):
            locals()[fn] = mycheck.deco(locals()[fn])

在mycheck.py中我有

def deco(func):
    def wrapper(func, *args, **kwargs):
        assert 2 == 1
        return func(*args, **kwargs)
    return decorator.decorator(wrapper, func)

我仍然希望能够将最后三个文件移出测试模块文件。但问题是locals()仅在此文件中完全有效。

0 个答案:

没有答案