【jenkins】创建一个project基础配置
- 一、 源码管理:以git仓库添加为例
- 二、Build Steps:以python为例
- 问题一:jenkins构件python脚本后,报告无法在jenkins中正常使用浏览器访问
- 三、构建后操作:报告输出Publish HTML reports
- 四、邮件发送--配置
- 步骤1:进入Jenkins管理--系统管理(Dashboard--》Manage Jenkins--》Configure System)找到 Jenkins Location 项
- 步骤2:进入Jenkins管理--系统管理(Dashboard--》Manage Jenkins--》Configure System)找到【邮件通知】项
- 步骤3:在步骤2后,测试配置邮箱是否能够正常发送邮件
- 步骤4:在Jenkins的使用中邮件提醒是一个常用功能,Extended E-mail Notification是一个功能更为齐全,使用也更为复杂的插件,下载安装jenkins插件:Email Extension Plugin、Environment Injector
- 步骤5:配置Extended E-mail Notification
- 步骤6:配置要发邮件的项目--添加构件步骤
- 步骤7:配置要发邮件的项目--添加构件后步骤
- 五、收集pytest运行结果pytest_terminal_summary函数代码
- 结果展示
一、 源码管理:以git仓库添加为例
前提:jenkins安装在的计算机需要安装好git环境,且该计算机的git与即将填入jenkins的git远端仓库是存在公钥私钥关联的;以windows为例:
在gitbash中输入:
git.exe ls-remote -h -- https://xxx.x6.x.xxx/auto_test/ui/cgjg_ui.git HEAD
会弹窗输入git登录账号、密码;之后无报错如下;
源码管理中,需要填写认证方式:Credentials;参考:https://www.likecs.com/show-305313406.html
二、Build Steps:以python为例
jenkins构件时,获取到git仓库的代码后,会存入workspace目录;直接就可以访问到代码项目-根目录
问题一:jenkins构件python脚本后,报告无法在jenkins中正常使用浏览器访问
解决方式:
安装 Groovy 插件,然后
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
三、构建后操作:报告输出Publish HTML reports
安装插件:Publish HTML reports
四、邮件发送–配置
步骤1:进入Jenkins管理–系统管理(Dashboard–》Manage Jenkins–》Configure System)找到 Jenkins Location 项
步骤2:进入Jenkins管理–系统管理(Dashboard–》Manage Jenkins–》Configure System)找到【邮件通知】项
smtp服务器 :填写用于发送邮件的邮箱的smtp服务器;
点击高级;如下填写:
步骤3:在步骤2后,测试配置邮箱是否能够正常发送邮件
步骤4:在Jenkins的使用中邮件提醒是一个常用功能,Extended E-mail Notification是一个功能更为齐全,使用也更为复杂的插件,下载安装jenkins插件:Email Extension Plugin、Environment Injector
步骤5:配置Extended E-mail Notification
content_default
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>${ENV,var="JOB_NAME"}</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt;font-family: Tahoma,Arial,Helvetica,sans-serif">
<tr>
本邮件由系统自动发出,无需回复!<br/>
各位同事,大家好! 以下系${PROJECT_NAME}项目UI自动化执行信息<br/>
<td><font color="#CC0000">自动化执行结果-${BUILD_STATUS}</font></td>
</tr>
<tr>
测试结果:<br/>
<td>
<p>用例总数:${TOTAL} ; 成功:${PASSED} ;失败:${FAILED};异常:${ERROR};跳过:${SKIPPED};未选择:${DESELECTED}</p>
<p>运行成功率:${SUCCESSFUL}; 运行时长:${TOTAL_TIMES}</p>
<p>执行详细报告(局域网内可访问):${PROJECT_URL}${BUILD_NUMBER}/allure</p>
</td>
</tr>
</table>
</body>
</html>
注意:这里的模板内容,需要与下面代码中:pytest Hooks函数pytest_terminal_summary 获取的内容一致;
配置邮件发送情况:点击 default Triggers,勾选情况
步骤6:配置要发邮件的项目–添加构件步骤
步骤7:配置要发邮件的项目–添加构件后步骤
五、收集pytest运行结果pytest_terminal_summary函数代码
1.在项目最外层conftest.py
import time
from _pytest import terminal
def pytest_terminal_summary(terminalreporter, exitstatus, config):
'''收集测试结果'''
# print(terminalreporter.stats)
total = terminalreporter._numcollected
if int(total) !=0:
passed= len([i for i in terminalreporter.stats.get('passed', []) if i.when != 'teardown'])
failed=len([i for i in terminalreporter.stats.get('failed', []) if i.when != 'teardown'])
error=len([i for i in terminalreporter.stats.get('error', []) if i.when != 'teardown'])
skipped=len([i for i in terminalreporter.stats.get('skipped', []) if i.when != 'teardown'])
deselected = total - passed -failed - error - skipped
successful = len(terminalreporter.stats.get('passed', []))/terminalreporter._numcollected*100
# terminalreporter._sessionstarttime 会话开始时间
duration = time.time() - terminalreporter._sessionstarttime
print('total times: %.2f' % duration, 'seconds')
with open("result.txt", "w") as fp:
fp.write("TOTAL=%s" % total+"\n")
fp.write("PASSED=%s" % passed+"\n")
fp.write("FAILED=%s" % failed+"\n")
fp.write("ERROR=%s" % error+"\n")
fp.write("SKIPPED=%s" % skipped+"\n")
fp.write("DESELECTED=%s" % deselected+"\n" )
fp.write("SUCCESSFUL=%.2f%%" % successful+"\n")
fp.write("TOTAL_TIMES=%.2fs" % duration)
else:
with open("result.txt", "w") as fp:
fp.write("TOTAL=%s" % total+"\n")
fp.write("PASSED=%s" % 0+"\n")
fp.write("FAILED=%s" % 0+"\n")
fp.write("ERROR=%s" % 0+"\n")
fp.write("SKIPPED=%s" % 0+"\n")
fp.write("DESELECTED=%s" % 0 + "\n")
fp.write("SUCCESSFUL=%.2f%%" % 0+"\n")
fp.write("TOTAL_TIMES=%.2fs" % 0)
结果展示
jenkins-构建控制台输出
邮件
![在这里插入图片描述](
参考:,感谢!
pytest Hooks函数pytest_terminal_summary
jenkins 添加环境变量 Environment Injector
jenkins 配置邮件发送 Email Extension Plugin