依次运行多个 pytest 文件

问题描述 投票:0回答:1

我需要在一个脚本文件中运行多个 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 的第二种方式中,我只收到最终结果,而不是每个测试的打印结果。

我怎样才能以正确的顺序获得完整的结果?

python
1个回答
0
投票

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()
© www.soinside.com 2019 - 2024. All rights reserved.