如何避免为跳过的Python单元测试运行设置方法

时间:2016-08-16 19:56:28

标签: python unit-testing python-unittest

我有一组测试用例,其中包含一些跳过的测试,但正在为跳过的测试运行setUp方法。根据{{​​3}}的文档,Skipped测试不会在它们周围运行setUp()或tearDown(),但是当我尝试它时它不是真的。我错过了什么?

import unittest

def fun(x):
    return x + 1

class MyTest(unittest.TestCase):
    def setUp(self):
        print "** in Setup"

    def test_02(self):
        self.skipTest("** skipping, but dont want to run setUp")
        self.assertEqual(fun(4), 5)
运行上述测试

时输出

Testing started at 3:48 PM ...
** in Setup

** skipping, but dont want to run setUp
Process finished with exit code 0

1 个答案:

答案 0 :(得分:1)

您可以使用unittest.skip

来装饰方法,而不是调用TestCase.skipTest
import unittest

def fun(x):
    return x + 1

class MyTest(unittest.TestCase):
    def setUp(self):
        print "** in Setup"

    @unittest.skip('skip please...')
    def test_02(self):
        self.skipTest("** skipping, but dont want to run setUp")
        self.assertEqual(fun(4), 5)

unittest.main()

在这种情况下,unittest标记该方法,以便它知道不打扰运行setUptearDown。对于您(直接或间接)在测试函数中提升unittest.SkipTest 的版本,已经太晚了 - setUp已经在那里运行了是任何表示应该跳过测试。