我有一个python unitest脚本,它具有TestCase
的双重继承,如下所示:
import unittest
class Upper(unittest.TestCase):
def test_dummy(self):
pass
class Lower(Upper):
pass
if __name__ == '__main__':
unittest.main()
其思想是用一个测试方法实现定义一个上层类,并从这个类(在不同的子目录中)派生,这个类包含一些额外的设置功能。最后,有一个upper.py
,从中衍生出许多不同的test_lower.py
。测试方法只在upper.py
中实现。你知道吗
给出了上面的例子,现在我做了一个python test_example.py
,只看到python正在尝试运行2个测试!脚本只包含一个测试,那么为什么unittest要执行两个测试呢?你知道吗
我假设unittest在Lower
中找到了一个测试,在Upper
中找到了一个测试,但我只想执行在Lower
中找到的测试(因为附加的和必需的设置功能)。我怎样才能做到这一点?你知道吗
上下文在实际情况中,这两个类定义在两个不同的文件中,位于两个目录中。也许这有帮助。你知道吗
Unittest库对TestCase子类属性进行迭代,查找以
test_
开头的方法。在Lower
测试用例中,它从其父级继承了一个方法,因此它被执行两次—一次在Upper
测试用例中执行,第二次在Lower
类中执行。 如果这两个测试用例都要运行,那么我看到的唯一解决方案就是对Upper
的另一个子类进行一个取出test_dummy
测试如果要在父类中运行测试,但在某些子类中跳过测试,请尝试以下操作:
更新:
我想现在我明白你想要什么了:你想要测试方法只在子类中运行。然后我建议您继承来自
object
的Upper
,以及来自Upper
和TestCase
的子类:跑步:
相关问题 更多 >
编程相关推荐