Предположим, что unittest
тест, в котором многострочный файл вывода генерируется с помощью скрипта Python (который использует argparse) и сравнивается равенство этого файла с ожидаемым результатом.
def test_actual_vs_expected_output(self):
actual_inp = '/path_to/actu_inp.txt'
expect_otp = '/path_to/expe_otp.txt'
actual_otp = '/path_to/actu_otp.txt'
myScript = '/path_to/myScript.py'
cmd_list = ['python2', myScript,
'-i', actual_inp,
'-o', actual_otp]
try:
subprocess.check_output(' '.join(cmd_list), shell=True)
except subprocess.CalledProcessError as e:
print e.output
if os.path.isfile(actual_otp):
expect_str = open(expect_otp).read()
actual_str = open(actual_otp).read()
self.assertMultiLineEqual(expect_str, actual_str)
Как я могу избежать жесткого кодирования вызова python2
(т.е. в cmd_list
приведенного выше примера)?В конце концов, интерпретатор Python2 может вызываться по-разному в разных системах.