仅在特定环境中运行一些测试

时间:2015-07-24 12:22:39

标签: python nose nosetests

我正在编写一些只在特定环境中有意义的测试,例如:如果主机具有支持Nvidia CUDA的GPU,或者它可能依赖于某些环境特定的其他资源。

如何使用Nosetests指定?如果Nosetests列出跳过的测试和跳过的原因,那么我的最佳选择就是。

2 个答案:

答案 0 :(得分:1)

您通常可以使用标准unittest库来执行此操作。在测试一开始,您始终可以检查先决条件with decorators(首选)或提出SkipTest例外。

import unittest 

class MyTestCase(unittest.TestCase):

    @unittest.skipIf(not have_gpu(),
                     "no gpu on this system")
    def test_gpu_performance(self):
        pass

    def test_something_else(self):
        if not have_gpu():
            raise unittest.SkipTest("no gpu")

答案 1 :(得分:0)

只有在设置了给定属性的情况下,您才能@attr来自nose.plugins.attrib的{​​{1}}装饰器{/ 3}}。

@attr(has_cuda_gpu=1)
def test_something(self):
    pass

然后创建一个配置这些属性的测试运行器脚本。如果满足您的条件,请添加以下属性:

ATTRS="some_other_condition=1"
if [ check_cuda_gpu ]; then
    ATTRS="$ATTRS,has_cuda_gpu=1"
fi
nosetests -a $ATTRS

当您运行测试时,has_cud_gpu未添加到属性中,那么将跳过使用此条件修饰的测试。