微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在多个 python 版本中运行 pytest 时,如何阻止 Tox 覆盖 junit.xml 文件和测试名称?

如何解决在多个 python 版本中运行 pytest 时,如何阻止 Tox 覆盖 junit.xml 文件和测试名称?

在我的 CI/CD 管道中,测试处理步骤查找 junit xml 文件并报告结果。我正在使用 Tox 为 python 版本 3.6、3.7、3.8 和 3.9 运行 pytest。

最初,Tox 将 3.6 生成的 junit.xml 替换为 3.7 中的 junit.xml,将 3.7 替换为 3.8 等,但通过传递 --junitxml="junit-{envname}.xml" 并更新 CI/CD 配置以查找 {{1} } 我能够保留每个环境的结果。

然而,测试结果是按测试模块和名称报告的,并且由于在每个 tox 环境中运行相同的测试,结果仍然显示后面的环境结果覆盖了前面的结果。

我曾尝试添加 junit-*.xml,但变量替换在这里的工作方式不同,而且我的 junit 套件名称现在对于所有环境都是 junit_suite_name = "project-{envname}"。我的目标是以某种方式在测试名称加上“py36”、“py37”等前缀,这样测试名称就会不同。

以防万一,我将 Bamboo 用于 CI/CD。

解决方法

正如上述评论中的@gold_cy,我能够使用 record-xml-attribute 来解决这个问题。

import sys
_ver = f"{sys.version_info[0]}_{sys.version_info[1]}"

def test_graph(record_xml_attribute):
    record_xml_attribute("classname",f"test_class_{_ver}")
    ...

似乎对我有用。 3_63_7 等现在已为我添加到类名中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。