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)