【jenkins】创建一个project基础配置、自动化邮件发送、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-构建控制台输出
在这里插入图片描述
在这里插入图片描述
邮件
![在这里插入图片描述](https://img-blog.csdnimg.cn/bd897d18ce7d462f90d914cbb791a2b9.png

参考:https://blog.csdn.net/qq_27371025/article/details/118479340,感谢!
pytest Hooks函数pytest_terminal_summary https://www.cnblogs.com/yoyoketang/p/12741564.html
jenkins 添加环境变量 Environment Injector https://www.cnblogs.com/yoyoketang/p/14955965.html
jenkins 配置邮件发送 Email Extension Plugin https://www.cnblogs.com/yoyoketang/p/12174056.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值