2014-09-21 58 views
0

我正在寻找一种方法来防止在例如无法联系所需的测试服务器时执行测试。如何防止py.tests在未满足基本要求的情况下运行?

在开始执行测试之前能够检测到这一点并且尽可能快地失败是至关重要的。

测试使用py.test或使用tox调用py.test来运行。

我确实有一段代码可以检测测试服务器是否启动,但我不知道哪个是正确的地方。

最初我认为这将是一个全球性的夹具,但这并不完全正确,因为这意味着每个测试都会运行,而我想要的不是运行它们。

回答

0

我使用skipif进行跳过测试。

我有一个函数,根据程序,我需要的可用性,它返回真或假:

def have_gpg(): 
    try: 
     subprocess.call(['gpg', '--version']) 
    except subprocess.CalledProcessError: 
     return False 
    return True 

然后因为我需要跳过如果GPG是不存在的测试中,我使用SKIPIF:

@pytest.mark.skipif("not have_gpg()") 
def test_gpg_decode(tmpdir): 
    ... 
    assert out = 'test' 

查看更多documentation on skipif

相关问题