Py.test运行直到通过装饰器

问题描述 投票:3回答:2

我有一些测试可以上传不同的数据(音乐,视频)并从服务中获取元数据。

所以time.sleep()是一种非常糟糕的方式,因为不同的服务器和情况可能使系统过载。

所以我正在寻找特殊的装饰器或参数来设置。像这样的东西

@fails(10)
def test_get_info(self):
    assert info == 1

在10次尝试之后断言仍然失败 - 引发异常。

谢谢。

python pytest
2个回答
7
投票

你可以使用retry decorator

@retry(AssertionError, tries=10)
def test_get_info(self):
    assert info == 1

注意:它没有考虑setupteardown方法。


3
投票

为了完成,我还要添加以下插件:https://pypi.python.org/pypi/flaky

它使用py.test和nose开箱即用,你所要做的就是装饰你的测试方法或类。我认为这是一个非常简洁的API:

@flaky(max_runs=10)
def test_get_info(self):
    assert info == 1
© www.soinside.com 2019 - 2024. All rights reserved.