如何创建多个测试用例并以编程方式运行它们?我尝试在一个公共测试用例上测试一个集合的多个实现。在
我更喜欢使用普通的unittest,避免依赖关系。在
以下是我查看的一些资源,这些资源并不完全符合我的需求:
Writing a re-usable parametrized unittest.TestCase method-公认的答案提出了四个不同的外部库。
{a2}-
此方法使用静态方法paramerize
。我不明白为什么不能直接将参数传入
TestSubClass.__init__
。
How to generate dynamic (parametrized) unit tests in python?-有点太黑了。
下面是一个最小(非)工作示例。在
import unittest
MyCollection = set
AnotherCollection = set
# ... many more collections
def maximise(collection, array):
return 2
class TestSubClass(unittest.TestCase):
def __init__(self, collection_class):
unittest.TestCase.__init__(self)
self.collection_class = collection_class
self.maximise_fn = lambda array: maximise(collection_class, array)
def test_single(self):
self.assertEqual(self.maximise_fn([1]), 1)
def test_overflow(self):
self.assertEqual(self.maximise_fn([3]), 1)
# ... many more tests
def run_suite():
suite = unittest.defaultTestLoader
for collection in [MyCollection, AnotherCollection]:
suite.loadTestsFromTestCase(TestSubClass(collection))
unittest.TextTestRunner().run(suite)
def main():
run_suite()
if __name__ == '__main__':
main()
上述方法在loadTestsFromTestCase
中出现错误:
TypeError: issubclass() arg 1 must be a class
使用^{} with to parametrize fixture 如何:
如果这不是一个选项,您可以创建一个mixin来包含测试函数,并创建子类来提供
^{pr2}$maximise_fn
s:相关问题 更多 >
编程相关推荐