如何运行一个文件夹中的多个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.py
或 xx_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'])
每次我运行终端中的这些文件都是这样一个接一个的:
pytest home.py
pytest work.py
pytest office.py
pytest road.py
pytest flight.py
.
.
.
(我在这里提供了一般的文件名)
这个过程需要很多时间。
是否可以通过任何脚本将这些文件一个接一个地运行在一起..?
如果可以,那怎么办?
如果可能请提供代码...
我通过一些网站了解到,使用 bash 脚本我们可以做到这一点。
不知道怎么实现。
如果您能提出任何其他方法,即使那样也会有所帮助。
我需要为每个文件生成一个报告。
如果我正在 运行 生成单个文件,那么我可以使用 --HTML--report.html 生成 HTML 文件。但是我想一次 运行 所有文件并且只需要生成一个报告。对于每次执行,它应该使用时间戳生成一个新报告。
如果有人能告诉我如何克服这个问题,那将会很有帮助。
将测试文件重命名为 test_xxx.py
或 xx_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'])