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 上如何查看和分析日志文件
<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”。这里会打印整个构建过程的实时日志,包括:
pytest或unittest执行的详细过程。- 你的测试脚本里用
print或logging打的日志。 - 任何错误堆栈信息。
如果日志太长,可以用“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 的配置。

