以下のような私のPython unittestスクリプトがあります。テストケースが基本モジュールをfoo_PC_A.py
またはfoo_PC_B.py
からロードする必要があるかどうかを判断するには、引数 '-a
'が必要です。私は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(...)