我有一组测试用例,所有的测试都应该进行完全相同的测试,例如“方法x是否返回现有文件的名称?”
我认为最好的方法是创建一个从TestCase派生的基类,让它们都共享这个类,并将测试添加到该类中。不幸的是,测试框架仍然尝试运行基类的测试,这是没有意义的。
class SharedTest(TestCase):
def x(self):
...do test...
class OneTestCase(SharedTest):
...my tests are performed, and 'SharedTest.x()'...
我尝试添加一个检查,如果测试是在基类的对象上调用而不是派生类的对象上调用,则简单地跳过该测试:
class SharedTest(TestCase):
def x(self):
if type(self) != type(SharedTest()):
...do test...
else:
pass
但是遇到了这个错误:
ValueError: no such test method in <class 'tests.SharedTest'>: runTest
首先,我希望有任何优雅的建议来完成这个任务。其次,尽管我不想使用type() hack,但我仍然想了解为什么它不能正常工作。
if getattr(...)
检查的测试方法。请参见我的答案的第二次更新。 - Manoj Govindan