【发布时间】:2010-11-14 16:49:04
【问题描述】:
可能重复:
How do you generate dynamic (parameterized) unit tests in Python?
有没有办法动态创建unittest 测试用例?我已经尝试了以下...
class test_filenames(unittest.TestCase):
def setUp(self):
for category, testcases in files.items():
for testindex, curtest in enumerate(testcases):
def thetest():
parser = FileParser(curtest['input'])
theep = parser.parse()
self.assertEquals(theep.episodenumber, curtest['episodenumber'])
setattr(self, 'test_%s_%02d' % (category, testindex), thetest)
..它正确地创建了所有方法(它们显示在dir() 中并且是可调用的),但是 unittest 的测试检测器,也不是 nosetest 执行它们(“Ran 0 tests in ...”)
因为我可能问错了问题——我想要达到的目标:
我有一个文件,其中包含测试数据、输入文件名列表和预期数据(在上面的代码中简化为 episodenumber),存储在 Python 字典中。键是类别,值是测试用例列表,例如...
test_cases = {}
test_cases['example_1'] = [
{'input': 'test.01',
'episodenumber': 1},
{'input': 'test.02',
'episodenumber': 2}
]
test_cases['example_2'] = [
{'input': 'another.123',
'episodenumber': 123},
{'input': 'test.e42',
'episodenumber': 32}
]
目前我只是遍历所有数据,在每个测试中调用self.assertEquals。问题是,如果一个失败,我看不到其余的失败,因为它们也被分组到一个测试中,当断言失败时该测试中止。
我认为解决这个问题的方法是(动态地)为每个测试用例创建一个函数,也许有更好的方法?
【问题讨论】:
标签: python unit-testing dynamic