仅运行特定文件的测试

时间:2012-05-17 13:19:36

标签: python unit-testing pycharm

我有两个单元测试文件,第二个文件的测试扩展并覆盖第一个文件上的一些测试。

用一个非常简单的例子说明。有tests1.py

import unittest

class A(unittest.TestCase):
    def setUp(self):
        print "setup stuff A"

    def test_stuff(self):
        print "test stuff A"

if __name__ == "__main__":
    unittest.main()

tests2.py

import unittest
from tests1 import A

class B(A):
    def setUp(self):
        print "setup stuff B"

    def test_stuff(self):
        print "test stuff B"

if __name__ == "__main__":
    unittest.main()

我希望能够自己运行每个文件,或者在一个批处理中运行整个文件集。而且我不想手动创建不同的套件,我必须手动指定要运行的测试集...

但是......通过上面的示例,当我运行python tests2.py时,tests1.py的测试也会运行!当我将它们全部运行时,它们会运行两次。我理解这是因为我从A导入tests2.py。我怎么能避免这个?我应该遵循这个最佳做法吗?

我实际上是从PyCharm运行测试,但我想这可能不相关,因为我可以重现从命令行运行测试的相同问题。

1 个答案:

答案 0 :(得分:2)

将公共代码拆分为另一个不从unittest.TestCase继承的类:

class Parent(object):
    pass # common stuff goes here

class A(Parent, unittest.TestCase):
    pass # A stuff here

class B(Parent, unittest.TestCase):
    pass # B stuff here