我有很多这样的传统测试。使用unittest跳过测试但是使用nosetests进行测试。
import unittest
import nose
import time
class BaseTestClass(unittest.TestCase):
@unittest.skip("Skipped")
def test_add(self):
"""Test 1"""
print "Execute test 1"
time.sleep(5)
def test_sub(self):
"""Test 2"""
print "Execute test 2"
time.sleep(5)
if __name__ == '__main__':
nose.run(argv=["nose", ".", "--verbosity=2", "--nocapture", '--no-skip'])
我想运行所有跳过的测试。 看起来像" no-skip" - 选项不起作用,变成我有输出
Execute test 2
Test 1 ... Test 2 ... ok
----------------------------------------------------------------------
Ran 2 tests in 5.001s
OK
看起来测试存在于输出中但不执行内部代码。
我希望看到:
Test 1 ... ok
Execute test 1
Test 2 ... ok
Execute test 2
----------------------------------------------------------------------
Ran 2 tests in 10 s
OK
答案 0 :(得分:0)
我遇到了类似的问题,经过一些研究,问题似乎是--no-skip
与unittests.skip
没有任何关系,但与处理nose.SkipTest
异常有关。
我最终得到了一个hacky解决方案,可以完成我的情况。也许它可以帮助别人。它包含使用您自己的自定义skip
函数,以便它“搭载” --no-skip
标志并做出相应的反应。
import sys
import unittest
no_skip_mode = '--no-skip' in sys.argv
def skip(reason):
if no_skip_mode:
# Don't decorate the test function. Just return as is.
def dummy_wrapper(fn):
return fn
return dummy_wrapper
return unittest.skip(reason)
我想您可以尝试对unittest.skip
进行修补。