运行 一些只在特定环境下测试
run some tests only in specific environment
我正在编写一些只在特定环境下才有意义的测试,例如如果主机具有支持 Nvidia CUDA 的 GPU,或者它可能取决于特定于某些环境的其他资源。
如何使用 Nosetests 指定它?我的最佳选择是 Nosetests 列出跳过的测试和跳过的原因。
您可以 tag tests 使用 nose.plugins.attrib
中的 @attr
装饰器,只有在设置了给定属性时才需要 运行。
@attr(has_cuda_gpu=1)
def test_something(self):
pass
然后创建一个测试 运行ner 脚本来配置这些属性。如果满足您的条件,请添加这些属性:
ATTRS="some_other_condition=1"
if [ check_cuda_gpu ]; then
ATTRS="$ATTRS,has_cuda_gpu=1"
fi
nosetests -a $ATTRS
当你运行你的测试时,has_cud_gpu
没有被添加到属性中,那么那些用这个条件装饰的测试将被跳过。
您通常可以使用标准 unittest library. At the very start of your tests you can always check for prerequisites with decorators (preferred) or by raising 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")
我正在编写一些只在特定环境下才有意义的测试,例如如果主机具有支持 Nvidia CUDA 的 GPU,或者它可能取决于特定于某些环境的其他资源。
如何使用 Nosetests 指定它?我的最佳选择是 Nosetests 列出跳过的测试和跳过的原因。
您可以 tag tests 使用 nose.plugins.attrib
中的 @attr
装饰器,只有在设置了给定属性时才需要 运行。
@attr(has_cuda_gpu=1)
def test_something(self):
pass
然后创建一个测试 运行ner 脚本来配置这些属性。如果满足您的条件,请添加这些属性:
ATTRS="some_other_condition=1"
if [ check_cuda_gpu ]; then
ATTRS="$ATTRS,has_cuda_gpu=1"
fi
nosetests -a $ATTRS
当你运行你的测试时,has_cud_gpu
没有被添加到属性中,那么那些用这个条件装饰的测试将被跳过。
您通常可以使用标准 unittest library. At the very start of your tests you can always check for prerequisites with decorators (preferred) or by raising 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")