1

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

用一个非常简化的例子来说明。有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当我批量运行它们时,它们运行了两次。我知道发生这种情况是因为我Atests2.py. 我怎样才能避免这种情况?是否有我应该遵循的最佳实践?

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

4

1 回答 1

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
于 2012-05-17T13:28:14.433 回答