继续集成jenkins+allure+pytest+python邮件发送(报告截图selenium实现)+python钉钉机器人通知

简介: 继续集成jenkins+allure+pytest+python邮件发送(报告截图selenium实现)+python钉钉机器人通知

实现思路

'''
0.邮件和钉钉都要在自动化执行完成后再去执行,不然拿到的数据和报告就不是最新的(重点)
1.由于报告是在线展示,我这是本地,就使用selenium去登录截图2个报告的页面,也可以截更多。保存到本地
2.通过邮箱发送截图附件实现邮箱发送报告
3.jenkins下拉代码会储存到工作空间,工作空间保存到本地,找到报告的数据文件查看是否有可以统计测试结果的
4.把原始的报告数据文件加以处理发送钉钉机器人
'''


报告截图

'''获取jenkins报告截图基于selenium'''
import math
from selenium import webdriver
from time import sleep
def ctrl_alt():
    def driver_(test=1):
        if test == 1:
            # 后台运行浏览器,不打开,但是这样打开截图不全,暂时没解决,使用的是打开浏览器的方式,用Jenkins运行时是无痕的,非常到位
            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_argument('--headless')
            driver = webdriver.Chrome(chrome_options=chrome_options)
        else:
            # 启动浏览器
            driver = webdriver.Chrome()
        return driver
    driver = driver_(2)
    driver.get('http://127.0.0.1:1111/login?from=%2F')
    driver.maximize_window()
    a = driver.find_elements_by_class_name('normal')
    a[0].send_keys('lcf')  # 账号
    a[1].send_keys(123456)  # 密码
    driver.find_element_by_class_name('submit-button').click()  # 登录
    # 报告页面1
    print('截图开始')
    driver.get('http://127.0.0.1:1111/job/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95-gitee%E4%BB%A3%E7%A0%81/allure/')
    sleep(1)
    driver.get_screenshot_as_file(r'F:\jb\baogao.png')  # 截图操作
    # 报告页面2
    driver.get('http://127.0.0.1:1111/job/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95-gitee%E4%BB%A3%E7%A0%81/allure/#graph')
    sleep(1)
    driver.get_screenshot_as_file(r'F:\jb\baogao1.png')
    print('截图结束')
    driver.quit()

邮箱发送

没啥好说的,代码在网上找的,能用,需要使用qq邮箱发送的话配置server = smtplib.SMTP(‘smtp.qq.com’) ,好像是这样

现在代码里是server = smtplib.SMTP(‘smtp.163.com’)

'''发送本地allure报告图片邮件'''
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
from allure_dd import ctrl_alt
# 配置邮箱信息
ctrl_alt()#截图
sender = 'xxxx@163.com'  # 发件人的地址
password = 'KWKYGKdfdsfOBH'  # 此处是我们刚刚在邮箱中获取的授权码
receivers = '666666@qq.com'  # 邮件接受方邮箱地址,可以配置多个,实现群发,注意这里要是字符串
# 邮件内容设置
content = MIMEText("<html><h2>测试报告,误回复</h2>", _subtype="html", _charset="utf-8")
msg = MIMEMultipart('related')
msg.attach(content)
# 添加图片附件
imageFile = r"F:\jb\baogao.png"
imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
msg.attach(imageApart)
imageFile = r"F:\jb\baogao1.png"
imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
msg.attach(imageApart)
# 邮件标题设置
msg['Subject'] = 'python发送附件测试-图片、Excel'
# 发件人信息
msg['From'] = sender
# 收件人信息
msg['To'] = receivers
# 通过授权码,登录邮箱,并发送邮件
try:
    server = smtplib.SMTP('smtp.163.com')  # 配置网易邮箱的smtp服务器地址
    server.login(sender, password)
    server.sendmail(msg['From'], msg['To'].split(','), msg.as_string())
    print('发送成功')
    server.quit()
except smtplib.SMTPException as e:
    print('error', e)

邮箱发送结果


钉钉机器人发送测试结果

现在钉钉机器人不支持发送本地图片,暂时先不发送报告图片到钉钉

'''发送接口测试信息推送钉钉消息'''
import csv
import json
import requests
a=[]
#这是jenkins拉下来代码的存放位置,构建时产生的测试结果信息文件
f = csv.reader(open(r'C:\Users\keking\AppData\Local\Jenkins\.jenkins\workspace\自动化测试-gitee代码\allure-report\data\suites.csv','r',encoding='UTF8'))
for i in f:
    if i[0]!='Status':
        a.append(i)
print(a)
#对原始数据坐下处理
api_run_count=len(a)
api_passed_count=0
api_failed_count=0
failed_case_name=[]
failed_case_path=[]
for i in a:
    if i[0]=='passed':
        api_passed_count+=1
    elif i[0]=='failed':
        failed_case_path.append(i[1])
        failed_case_name.append(i[3])
        api_failed_count+=1
print(api_passed_count)
print(api_failed_count)
print(failed_case_name)
print(failed_case_path)
def dd_robot():
  HEADERS = {"Content-Type": "application/json;charset=utf-8"}
  key = "b7ff3fd2fd9b2dc5f78xxxxxxxxxxxxx0ff1056d172d922cab"
  url = f" https://oapi.dingtalk.com/robot/send?access_token={key}"
  #content里面要设置关键字 我机器人设置的关键字为'接口测试结果:'
  data_info = {
    "msgtype": "text",
    "text": {
    "content": "接口测试结果:"+f'\n总共运行{api_run_count}条用例'
               + f'\n成功{api_passed_count}条用例'
               + f'\n失败{api_failed_count}条用例'
               + f'\n失败用例名称{str(failed_case_name)}'
               + f'\n失败用例地址{str(failed_case_path)}'
    },
    "isAtAll": False
    #这是配置需要@的人
     # ,"at": {"atMobiles": ["15xxxxxx06",'18xxxxxx1']}
  }
  value = json.dumps(data_info)
  response = requests.post(url,data=value,headers=HEADERS)
  if response.json()['errmsg']!='ok':
    print(response.text)
if __name__ == '__main__':
    dd_robot()

我看过报告下的一些文件信息,这个文件的信息可以用来统计

suites.csv文件信息

结构

信息

发送结果


jenkins配置运行python钉钉、邮件脚本

配置邮件发送(重点构建结束触发另一个任务构建)

新建一个任务

配置指定另一个任务构建完成后执行当前任务的构建

配置钉钉发送

除了脚本文件不同其他都不一样

邮箱和钉钉子任务运行

测试

通过修改用例错误数来看邮件失败用例和钉钉的失败用例数是否变化

每次构建自动化测试后会自动构建发送邮箱的任务,实现发邮箱钉钉,结束

3天的学习成果,就是干

相关文章
|
1月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
50 3
|
4月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
4月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
59 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
83 0
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
3月前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
59 3
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
250 0
|
4月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
78 2
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
101 1
|
4月前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。