python改变导入模块中的变量的问题

Python中循环函数1调用函数2,函数2中import了一个模块,函数1:

def run():
    for a in b:
        runTest(a,patter)

函数2:

def runTest(case_dir, patter):
    import TestRunner
    discover = unittest.defaultTestLoader.discover(case_dir, pattern=patter)

TestRunner中会有一些变量,变量值会动态变化。但是在函数1循环到第二次及以后时,函数2中import模块的变量值不会改变,导致一些动态配置无效。

误区:runTest方法结束时将TestRunner中的变量置为None是无效的,只会在下一次找不到那个变量。

解决方法:

导入模块后使用reload方法重新导入。有人想问这不是多次一举么?

非也非也,下次循环导入时发现模块已存在,就不会再导入,变量也不会有任何变化,重新导入会重新初始化,这样子就把问题解决了。

def runTest(case_dir, patter):
    import TestRunner
    reload(TestRunner)
原文地址:https://www.cnblogs.com/fengsiyi/p/6928984.html