我有两个单元测试文件,第二个文件的测试扩展并覆盖第一个文件上的一些测试。
用一个非常简单的例子说明。有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运行测试,但我想这可能不相关,因为我可以重现从命令行运行测试的相同问题。
答案 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