我当前正在运行一组单元测试,但实际上崩溃了。因此,为了运行所有程序并了解导致崩溃的原因,我在以下代码中使用了Python的子进程模块-tester.py
import os
import subprocess
test_dir = './.build_release/test/'
test_files = sorted(os.listdir(test_dir)) # Gets all unittest files
with open('test_results_bad.txt','w') as f: # Save results of unittests in text file
for curr_test in test_files:
# Show current test
f.write(curr_test + ' ')
print(curr_test)
# Run current test
curr_proc = subprocess.run([os.path.join(test_dir, curr_test)], shell=False)
# Indicate whether current test crashed or not
if curr_proc.returncode == 0:
f.write("PASSED\n")
else:
f.write("F A I L E D ..... ????" + str(curr_proc.returncode) + '\n')
我的操作系统是Ubuntu 18.04。尝试从https://bitbucket.org/aquariusjay/deeplab-public-ver2.git
构建DeepLab_v2时遇到崩溃崩溃的三个单元测试的返回码分别为-6,-6和-11。这些是什么意思?
我已经四处搜寻Google,仅使自己感到困惑。我认为负号表示错误,但找不到方法来识别6和11的值应该给我什么信息。
这些返回代码是在您通过子进程运行的程序中定义的,它们不是常规的OS错误代码或Python代码。查找有关通过子流程调用的代码的文档。例如,这是一个返回错误代码的批处理脚本。
@echo off
if /I "%~1"=="TEST" (exit 5) else (exit 0)
如果使用子过程调用此函数,则除0
以外的任何参数都将获得代码TEST
。
import subprocess
subprocess.call(['test.bat', 'hello world'])
# returns:
0
subprocess.call(['test.bat', 'TEST'])
# returns:
5