0
我有我的Python單元測試腳本,如下所示。它需要一個參數「-a
」來確定測試用例是否應該從foo_PC_A.py
或foo_PC_B.py
加載基本模塊。我使用shutil.move()
將.py文件重命名爲foo.py,因此所有的測試用例模塊(例如tm1.py
,tm2.py
)只需import foo
即可。雖然這看起來像一個解決方法,而不是Pythonic。有沒有更好的方法來做到這一點?或者更好的設計從根本上解決這個問題。Python運行時確定要加載哪個模塊
(run_all_unittest.py)
if sys.argv[1] = '-a':
shutil.move('foo_PC_A.py', 'foo.py')
else:
shutil.move('foo_PC_B.py', 'foo.py')
test_module_list = ['tm1', 'tm2', ...]
for test_module_name in test_module_list:
test_module = __import__(test_module_name)
test_suites.append(unittest.TestLoader().loadTestsFromModule(test_module))
alltests = unittest.TestSuite(test_suites)
unittest.TextTestRunner().run(alltests)
if sys.argv[1] = '-a':
shutil.move('foo.py', 'foo_PC_A.py')
else:
shutil.move('foo.py', 'foo_PC_B.py')
(tm1.py)
from foo import MyTestCase
...
(foo_PC_A.py)
import <some module only available on PC A>
class MyTestCase(unittest.TestCase):
...
(foo_PC_B.py)
# since the PC A modules are not available on PC B,
# just call the pre-built executable via subprocess
import subprocess
class MyTestCase(unittest.TestCase):
...
def test_run(self):
subprocess.call(...)