Python 自动化测试项目在 Jenkins 上如何查看和分析日志文件

···logger.py def log_settings(logging_path=None): import logging.config import logging.handlers if logging_path is None: logging_path = os.getenv('WORKSPACE', os.curdir)

···

Python 自动化测试项目在本地环境运行会产生 Log 文件,但在 CI jenkins 上收集不到该 log 文件。 ··· 11:05:10 Output: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/output.xml 11:05:16 Log: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/log.html 11:05:16 Report: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/report.html 11:05:16 iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ] 11:05:20 Archiving artifacts 11:05:27 Robot results publisher started... 11:05:27 -Parsing output xml: 11:05:27 Done! 11:05:27 -Copying log files to build dir: 11:05:36 Done ···


Python 自动化测试项目在 Jenkins 上如何查看和分析日志文件

5 回复

<br>def log_settings(logging_path=None):<br> import logging.config<br> import logging.handlers<br> if logging_path is None:<br> logging_path = os.getenv('WORKSPACE', os.curdir)<br>

Python 自动化测试项目在本地环境运行会产生 Log 文件,但在 CI jenkins 上收集不到该 log 文件。

<br>11:05:10 Output: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/output.xml<br>11:05:16 Log: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/log.html<br>11:05:16 Report: /var/fpwork/jenkins_wk/workspace/IMP_GIT_ET_Regression/IMP/test/ET/log/report.html<br>11:05:16 iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]<br>11:05:20 Archiving artifacts<br>11:05:27 Robot results publisher started...<br>11:05:27 -Parsing output xml:<br>11:05:27 Done!<br>11:05:27 -Copying log files to build dir:<br>11:05:36 Done<br>


Jenkins里看Python自动化测试的日志,主要就两个地方:控制台输出和归档的测试报告。

1. 控制台输出 (Console Output) 这是最直接的。每次构建完成后,点进去就能看到“Console Output”。这里会打印整个构建过程的实时日志,包括:

  • pytestunittest 执行的详细过程。
  • 你的测试脚本里用 printlogging 打的日志。
  • 任何错误堆栈信息。

如果日志太长,可以用“Build History”旁边的“View as plain text”看纯文本,或者直接下载整个日志文件。

2. 测试报告归档 光看控制台不够,结构化数据得靠报告插件。常用的搭配是:

  • Allure Report:最推荐。测试前用 pytest --alluredir=./allure-results 生成结果文件。然后在Jenkins里装“Allure Jenkins Plugin”,构建后配置“Allure Report”,指向结果目录。构建完成后会多一个“Allure Report”图标,点进去看图表、用例详情、历史趋势,比看纯文本爽多了。
  • JUnit Report:老牌标准。用 pytest --junitxml=./junit.xml 生成XML报告。Jenkins自带“JUnit Plugin”,构建后配“Publish JUnit test result report”,指定XML路径。之后会在构建状态页看到“Test Result”趋势图,点进去能看哪些用例过了/挂了。
  • HTML Report:比如用 pytest-html 生成 report.html。用“HTML Publisher Plugin”来发布和展示。

简单说就是:实时日志看控制台,结构化分析用报告插件。

示例配置 (Jenkinsfile - 声明式管道)

pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                sh 'pytest --alluredir=./allure-results --junitxml=./junit.xml'
            }
        }
    }
    post {
        always {
            allure includeProperties: false,
                   jdk: '',
                   results: [[path: 'allure-results']]
            junit 'junit.xml'
        }
    }
}

一句话总结:配好Allure或JUnit插件,构建后直接看可视化报告。

老夫来提供些许帮助。。。

TIP1: 提问的时候提供一些有效的 information 可以显得问题更可爱一点。参考一下 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way


TIP2: 既然跑成了,先看看有没有日志生成,然后再看看收集这一步有什么问题。

所以:
1. 先查查 Jenkins 这个 job 是在什么机器上 run 的,是 master 还是 slave 上 run 的。
2. Remote 到 该机器, 看看这个 log 文件存在不存在。
3. 如果不存在,分析为什么 remote 就无法产生 log 文件。
一般是权限不对,偶尔也有产生了 log 文件又被冲掉(不同 build 同 workspace ; job 最后存在 clean 操作)的情况。
4. 如果存在但是收集不到,检查你收集的设置是不是格式正确,有没有使用多 | 使用错 匹配符,相对路径层级对不对。
5. 最重要的一点,我压箱底的检查宝典了:请确保拼写正确。。。

第 5 点是最重要的。

感谢~~~

发现是 log 生成路径不在期望的地方。。。 于是更改了 jenkins 收集 log 的配置。

回到顶部