gpt4 book ai didi

python - 如何将不同的 pytest 测试附加到同一个 junit xml 文件而不是覆盖它?

转载 作者:行者123 更新时间:2023-12-04 16:44:32 25 4
gpt4 key购买 nike

我在 shell 脚本中有以下函数:

test_handler(){
FOLDER_NAME=$1
echo "running tests in: ${FOLDER_NAME} package"
cd ${SOURCE_CODE_FOLDER}/${FOLDER_NAME}
pipenv install --dev
#need to run this with pipenv run to get the install dependencies.
pipenv run run-tests
EXIT_CODE=$?

if [ ${EXIT_CODE} != 0 ];then
echo "error, Exit code=${EXIT_CODE} in ${FOLDER_NAME}'s tests." >> /home/logs.txt;
exit 1;
fi;

echo "${FOLDER_NAME}'s tests succeeded." >> /home/logs.txt;
}
该功能运行良好。它在脚本中用两个不同的文件夹名称调用两次,这样每个文件夹都有一个“测试”包,里面有 pytests。
线路 pipenv run run-tests正在运行以下脚本:
#!/bin/bash
python3.7 -m pytest -s --cov-append --junitxml=/home/algobot-packer/tests.xml $PWD/tests/
EXIT_CODE=$?

exit ${EXIT_CODE}
最终它生成一个 tests.xml文件。唯一的问题是第二个函数调用覆盖了第一个函数调用。
有没有办法生成一个 xml 文件来保存两次运行测试脚本的结果(附加结果而不是重写文件)?
我试过查看文档和 pytest --help但找不到我的答案。

最佳答案

您可以生成一个新报告,然后合并两个 XML 报告,而不是附加 JUnit XML 报告。有许多图书馆可以做到这一点。
这是一个使用 junitparser 的示例合并两个 JUnit 报告:

from junitparser import JUnitXml

full_report = JUnitXml.fromfile('/path/to/full_report.xml')
new_report = JUnitXml.fromfile('/path/to/new_report.xml')

# Merge in place and write back to same file
full_report += new_report
full_report.write()

关于python - 如何将不同的 pytest 测试附加到同一个 junit xml 文件而不是覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com