【问题标题】:Pytest : How to update jenkins url in pytest html report instead of local pathPytest:如何在 pytest html 报告中更新 jenkins url 而不是本地路径
【发布时间】:2019-09-26 20:57:58
【问题描述】:

我可以看到在我的 html 报告中创建的以下路径,当它是本地作业时,我可以从 html 打开此路径,但是当我在 jenkins 中运行时,此链接不起作用,我能够看到元数据有 url 和工作区信息,我可以使用这个元数据在 html 文件中生成正确的链接,这样我就可以从 jenkins 页面打开它们。

href="file:///space/scratch/jenkins/navarro/workspace/coverage_regression/dut/python/.simtest/NavarroSimTestSystem/default/TestJaxi/test_py_jaxi_read_version_reg_ss/TestJaxi.test_py_jaxi_read_version_reg_ss-2458081572_simulate.log" type="text/plain" >TestJaxi.test_py_jaxi_read_version_reg_ss-2458081572_simulate.log

【问题讨论】:

  • 该文件必须托管在某个地方才能使链接正常工作。您可以将文件存储为 Jenkins 工件并将链接替换为工件的链接(但您必须自己组装链接,例如从 Jenkins 环境变量中提取作业 ID 等)。
  • 谢谢@hoefling,我已经以类似的方式实现了,我能够得到。任何想法如何更新摘要链接,-------------------------- 生成的 html 文件:file:///space/从头开始/kkt/trails/soc/python/checking.html ---------------------------

标签: python jenkins jenkins-pipeline pytest


【解决方案1】:

您是否尝试在 Jenkins 工作中显示测试结果?我发现使用 --junitxml 开关生成 junit.xml 并将 Jenkins 指向 Junit XML 路径更容易。它显示所有测试结果数据。或者您是否尝试过“html-publisher-plugin”。

【讨论】:

  • 感谢您的回复,我正在生成 xml,但是当我在 jenkins 中打开它时,它显示 std_out 但不显示模拟链接。
【解决方案2】:

我通过以下方式找到了。

    def pytest_configure(self, config):
        # below lines has been added to manipulate the log path in html report while running in jenkins 
        if 'BUILD_URL' in config._metadata:
            self.build_url = os.path.join(config._metadata['BUILD_URL'],'artifact')

    @pytest.mark.optionalhook
    def pytest_html_results_table_html(self, report, data):
            if test_artifact_simulate and os.path.isfile(test_artifact_command):
            from py.xml import html
            ul = html.ul()
            if self.build_url != None :
                simulate_log = test_artifact_simulate[test_artifact_simulate.find('dut'):]
                print 'KKT simulate log is %s' %simulate_log
                jenkins_log_path = os.path.join(self.build_url,simulate_log) 
                print 'KKT jenkins_log_path log is %s' %jenkins_log_path
                li = html.li(html.a(os.path.basename(test_artifact_simulate),
                    href= jenkins_log_path, type="text/plain"))
            else :
                li = html.li(html.a(os.path.basename(test_artifact_simulate),
                    href='file://' + test_artifact_simulate, type="text/plain"))
            ul.append(li)
            div = html.div()
            div.append(html.p("Test artifacts:"))
            div.append(ul)
            data.append(div)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多