通过nosetest运行跳过的测试(不跳过不起作用)

时间:2016-04-21 08:56:49

标签: python nose python-unittest

我有很多这样的传统测试。使用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

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,经过一些研究,问题似乎是--no-skipunittests.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进行修补。