【发布时间】:2016-05-07 15:00:09
【问题描述】:
我的 Python 单元测试脚本如下所示。它需要一个参数'-a'来确定测试用例是否应该从foo_PC_A.py 或foo_PC_B.py 加载基本模块。我使用shutil.move() 将任一.py 文件重命名为foo.py,因此所有测试用例模块(例如tm1.py、tm2.py)都可以简单地import foo。虽然这看起来像是一种解决方法而不是 Pythonic。有没有更好的方法来做到这一点?或者更好的设计从根本上解决这个问题。
(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(...)
【问题讨论】:
标签: python python-2.7 unit-testing import