问题有两个部分。
最简单的部分只是添加前缀'text_'
在每个字符串上:
tests = {test: 'test_'+test for test in myTestDict}
更困难的部分实际上是按名称查找函数。那种事就是usually这是一个坏主意,但是您遇到了一种通常有意义的情况(生成测试)。您可以通过查找它们来做到这一点你的模块的全局字典 https://docs.python.org/3/library/functions.html#globals, 像这样:
tests = {test: globals()['test_'+test] for test in myTestList}
如果测试位于模块全局范围之外的其他地方,则同一想法会有不同的情况。例如,将它们设置为类的所有方法可能是一个好主意,在这种情况下,您可以这样做:
tester = TestClass()
tests = {test: getattr(tester, 'test_'+test) for test in myTestList}
(虽然代码更有可能在里面TestClass
,所以它将使用self
而不是tester
.)
当然,如果您实际上不需要该字典,您可以将理解更改为显式for
陈述:
for test in myTestList:
globals()['test_'+test]()
还有一件事:在重新发明轮子之前,您是否看过测试框架内置于标准库中 https://docs.python.org/3/library/development.html, or ?