我需要在一个脚本文件中运行多个 pytest 文件
我在pytest和unittest中使用了subprocess.Popen。
在这两种情况下我都没有得到想要的结果。
我尝试了以下方法:
//all_tests_files - an array with all tests folders
for file in all_tests_files:
# get path of the test
f = os.listdir(PATH + '\\' + file)
for test in f:
x1 = test.find('test_')
x2 = test.find('.py')
if x1 is 0 and x2 is not -1:
p = PATH + '\\' + file + '\\' + test
print("--- RUN TEST: " + test + " ---")
test_process = subprocess.Popen(['python', '-m', 'unittest', p])
test_process.wait()
通过这种方式,使用unittest我收到测试结果,但顺序不正确,首先是最终结果,然后是测试本身中的打印结果。
test_process = subprocess.Popen(['python', '-m', 'pytest', p])
test_process.wait()
在使用 pytest 的第二种方式中,我只收到最终结果,而不是每个测试的打印结果。
我怎样才能以正确的顺序获得完整的结果?
pytest
允许每次调用多个测试模块,例如
python -m pytest tests/test_foo.py tests/test_bar.py
我就这么做
test_files = []
for test_folder in all_tests_files:
test_files.extend(glob.glob(os.path.join(PATH, test_folder, "test_*.py"))
print(test_files) # for debugging
proc = subprocess.Popen([
sys.interpreter,
'-m',
'pytest',
*test_files,
])
proc.wait()