我正在编写一些只在特定环境中有意义的测试,例如:如果主机具有支持Nvidia CUDA的GPU,或者它可能依赖于某些环境特定的其他资源。
如何使用Nosetests指定?如果Nosetests列出跳过的测试和跳过的原因,那么我的最佳选择就是。
答案 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
未添加到属性中,那么将跳过使用此条件修饰的测试。