在Python3.4中,我希望能够为测试目的创建一个非常简单的分派表。其思想是使用一个字典,其中键是要测试的函数名称的字符串,数据项是测试函数的名称
例如:
myTestList = (
"myDrawFromTo",
"myDrawLineDir"
)
myTestDict = {
"myDrawFromTo": test_myDrawFromTo,
"myDrawLineDir": test_myDrawLineDir
}
for myTest in myTestList:
result = myTestDict[myTest]()
我的想法是在某个地方有一个函数名列表。在本例中,我手动创建了一个字典,将这些名称映射到测试函数的名称。测试函数名是函数名的简单扩展。我想从函数名列表中计算整个字典(这里是^{
或者,如果我不用字典也能做同样的事情,那也没关系。我试着从myTestList中的条目构建一个新字符串,然后使用local()
设置调用,但没有成功。词典的概念来自于Python 3.x documentation
Abarnert的回答似乎很有用,但要回答您最初的问题,即如何调用所有测试函数以获得函数名列表:
这个问题有两个部分
简单的部分是在每个字符串前面加上前缀
'text_'
:更困难的部分实际上是按名称查找函数。这类事情通常是一个坏主意,但您遇到了一种情况(生成测试),它通常是有意义的。您可以通过在your module's global dictionary中查找它们来实现这一点,如下所示:
如果测试位于模块的全局范围之外的某个地方,则相同的想法也会有所不同。例如,最好将它们都设置为类的所有方法,在这种情况下,您可以执行以下操作:
(虽然代码更可能位于
TestClass
内,但它将使用self
而不是tester
。)当然,如果您实际上不需要dict,您可以将理解更改为显式的
for
语句:还有一件事:在重新发明轮子之前,您是否看过测试框架built into the stdlib或available on PyPI
相关问题 更多 >
编程相关推荐