我正在使用一个加载框架的测试框架,然后在该模块的范围内搜索经过@test()
装饰的函数。我想做的是通过动态创建那些标记变量来动态创建那些测试。
它看起来像这样:
for i in range(100):
globals()[f"Test_{i}"] = test()(Test)
为方便起见,我将其包装成可重用的函数并将其粘贴在另一个模块中:
def add_test(t, n=1):
for i in range(n):
globals()[f"{t.__name__}_{i}"] = test()(t)
但是,当我在测试模块中导入add_test()
函数并进行调用时,没有新变量添加到测试模块的全局范围中。如果我将此功能移到使用它的模块中,它将起作用。似乎globals()
绑定到模块范围,而不是真正的全局范围。这种分析正确吗?我该如何解决?