如何运行一个文件夹中的多个python文件一个接一个,如何生成单个html报告?

How to run multiple python files in a folder one after another and how to generate single html report?

每次我运行终端中的这些文件都是这样一个接一个的:

pytest home.py
pytest work.py
pytest office.py
pytest road.py
pytest flight.py

.
.
.

(我在这里提供了一般的文件名)

这个过程需要很多时间。

是否可以通过任何脚本将这些文件一个接一个地运行在一起..?

如果可以,那怎么办?

如果可能请提供代码...

我通过一些网站了解到,使用 bash 脚本我们可以做到这一点。

不知道怎么实现。

如果您能提出任何其他方法,即使那样也会有所帮助。

我需要为每个文件生成一个报告。

如果我正在 运行 生成单个文件,那么我可以使用 --HTML--report.html 生成 HTML 文件。但是我想一次 运行 所有文件并且只需要生成一个报告。对于每次执行,它应该使用时间戳生成一个新报告。

如果有人能告诉我如何克服这个问题,那将会很有帮助。

将测试文件重命名为 test_xxx.pyxx_test.py,然后将测试文件的根目录中的 运行 pytest 重命名。

Pytest 将发现这些文件中的所有测试并为它们生成一个报告。您可以检查 how pytest discovers tests 以获得更好的理解。

如果您想将时间戳添加到您的报告文件名中,您可以尝试添加 date 变量,如果您在 Linux:

pytest -v -s --junitxml=results$(date '+%Y%m%d_%H%M%S').xml

或者,如果您已经安装了 pytest-html 并且想要创建一个 html 报告:

pytest -v -s --html=report$(date '+%Y%m%d_%H%M%S')).html

您当然可以在 shell 脚本中调用它:

#!/bin/bash
python -m pytest -v -s --html=report$(date '+%Y%m%d_%H%M%S').html

或者,如果您出于某种原因想从另一个 Python 脚本调用它:

import pytest
from datetime import datetime

now = datetime.now()
pytest.main(['-v', '-s', f'--junitxml=report{now:%Y%m%d_%H%M%S}.xml'])