这个问题看起来有些重复,但是这些只是解决了实施拆解的问题,但是在测试完成并做出判决之前我不想这样做。在此之后,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()仅在此文件中完全有效。