我想用 python 编写一个方法,该方法动态读取模块并创建该模块中所有函数的列表。然后我想遍历这个列表并调用每个函数。到目前为止,我有以下代码:
import mymodule
from inspect import getmembers, isfunction
def call_the_functions():
functions_list = [f for f in getmembers(mymodule) if isfunction(f[1])]
for f in functions_list:
result = f()
我的问题是我的程序崩溃了,因为一些函数需要参数。我想做类似下面的事情,但不知道怎么做:
for f in functions_list:
args = [""] * f.expectedNumberOfArguments()
result = f(*args)
我的做法是否正确? (我基本上是在写一个单元测试,第一个检查只是函数返回一个正确类型的对象,不管调用它们的参数是什么。)
请您参考如下方法:
您的方法存在根本性缺陷。如果仔细编写,函数将通过引发 TypeError 或断言来拒绝无效类型的参数。如果做不到这一点,他们将尝试访问参数的属性或方法并立即得到一个 AttributeError。
试图避免编写对被测函数有所了解的单元测试是徒劳的。
