首页 > 其他分享 >pythn自动化之allure报告动态刷新并邮件发送测试结果数据

pythn自动化之allure报告动态刷新并邮件发送测试结果数据

时间:2024-09-25 10:02:20浏览次数:6  
标签:count pythn list self pid allure report 邮件

  我们在做自动话测试时,一般情况下我们需要查看allure报告,需要allure启动一个服务,但是allure报告有个缺点就是报告不会自动刷新,你你能看到的页面报告就是第一次启动打开的报告,如果想要看到最新的服务报告,需要重新启动一下服务

那么怎么样才能去看到我们想要的报告动态刷新呢?这里我用了python杀掉进程和重启进程完成的

  主要步骤有

  1:查询allure进程

  2:杀掉allure进程

  3:启动allure进程

最重要的是用Jenkins去调用python脚本,这样就可以做持续进程了,具体处理看代码

import json
import signal

import os

import requests


class RunCmd:
    def __init__(self):
        self.netstat = 'netstat -anp | grep 8224'#查询端口进程是否存在

        self.pytest_report = 'python3 -m pytest -sv /usr/local/project/jdWebProject/test.py --alluredir allure-temp'#生成allure报告数据文件
        self.allure_report = 'allure generate -c -o allure-report allure-temp'#生成allure报告页面文件

        self.allure_server = 'allure serve /usr/local/project/jdWebProject/allure-temp  -p 8224'#启动报告服务

#查询用例执行成功条数
    def dos_result(self):

        self.r = os.popen(self.pytest_report)
        count = 0
        for line in self.r.readlines():
            if line.count("PASSED"):
                count += 1
                print(count)
        return count

# 总用例数2
# 成功用例数count
#杀掉进程
    def kill_allure_pid(self):
        self.r = os.popen(self.netstat)
        pid_list = []
        for lin in self.r.readlines():
            list_temp = lin.split()#用空切割成列表
            if list_temp[6] not in pid_list:
                # pid_list.append(int(list[6]))
                pid_num = list_temp[6].split('/')
                pid_list.append(int(pid_num[0]))
        if len(pid_list):
            os.kill(pid_list[0], signal.SIGINT)

        return True

    def create_allure_report(self):
        # success_nun = self.dos_result()

        self.r = os.popen(self.allure_report)
        for line in self.r.readlines():
            print(line)
            pass
            count = 0
            if line.count('successfully'):
                count += 1
                print('执行下一个', count)
            break
        self.kill_allure_pid()

    def start_allure_server(self):

        # self.create_allure_report()
        self.r = os.popen(self.allure_server)

    def start_allure_server_send_email(self):
        import smtplib
        from email.mime.text import MIMEText
        # 设置服务器所需信息
        # 阿里邮箱服务器地址
        mail_host = 'smtp.mxhichina.com'
        # 阿里邮箱用户名
        mail_user = '[email protected]'
        # 密码(部分邮箱为授权码)
        mail_pass = 'ertrtrtrnesourcrtrtrtrrtrte@1'
        # 邮件发送方邮箱地址
        sender = '[email protected]'
        # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
        receivers = ['[email protected]', '[email protected]']

        # 设置email信息
        # 邮件内容设置

        success_nun = self.dos_result()
        # self.create_allure_report()
        # 杀掉allure进程
        self.kill_allure_pid()
        self.start_allure_server()
        content = "总用例数:-----2\n成功用例数:-----"+str(success_nun)+"\n详细内容:http://192.168.1.147:8224/index.html"
        message = MIMEText(content, 'plain', 'utf-8')
        # 邮件主题
        message['Subject'] = '节度使UI自动化测试报告'
        # 发送方信息
        message['From'] = sender
        # 接受方信息
        # message['To'] = receivers[0]
        message['To'] = ','.join(receivers)

        # 登录并发送邮件
        try:
            # smtpObj = smtp_lib.SMTP()
            smtp_obj = smtplib.SMTP(mail_host, 25)
            # 连接到服务器
            # smtpObj.connect(mail_host, 25)
            # server = smtp_lib.SMTP(mail_host, 25)
            # 登录到服务器
            smtp_obj.login(mail_user, mail_pass)
            # 发送
            smtp_obj.sendmail(sender, receivers, message.as_string())
            # 退出
            smtp_obj.quit()
            print('success')
        except smtplib.SMTPException as e:
            print('error', e)  # 打印错误
    #信息发送企业微信
    def start_allure_server_send_robot(self, webhook_url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e0866445-084e-4270-8948-b568efa7fd6f'):
        #获取到成功用例数
        success_nun = self.dos_result()
        # self.create_allure_report()
        # 杀掉allure进程
        self.kill_allure_pid()
        self.start_allure_server()
        content = "总用例数:-----2\n成功用例数:-----" + str(success_nun) + "\n详细内容:http://192.168.1.147:8224/index.html"
        data = {"msgtype": "markdown", "markdown": {"content": content}}
        r = requests.post(url=webhook_url, data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
        return r.text, r.status_code



t = RunCmd()
t.start_allure_server_send_email()

 

标签:count,pythn,list,self,pid,allure,report,邮件
From: https://www.cnblogs.com/weimeizhizuo/p/18430722

相关文章

  • 使用pytest和allure框架的登录测试类
    使用pytest和allure-pytest进行登录测试是一种有效的测试方式,能够结合自动化测试框架与轻量级轻量级的灵活轻量级轻量级测试报告工具。下面我将给出一个基本的示例,展示如何为登录功能编写一个测试类,并使用pytest和allure-pytest来运行和生成报告。步骤1:安装必要的库首先,确......
  • 邮件发送基础:深入SMTP协议、配置邮件服务器及Python实现
    目录引言SMTP协议基础定义与功能工作原理特性与优势邮件服务器配置第三方邮件服务商配置自建邮件服务器配置使用Python发送邮件安装smtplib和email模块发送简单纯文本邮件发送HTML格式邮件发送带附件的邮件完整示例:发送带附件的HTML邮件注意事项总结引言......
  • SpringBoot+mail 轻松实现各类邮件自动推送
    在实际的项目开发过程中,经常需要用到邮件通知功能。例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多。早期的时候,为了能实现邮件的自动发送功能,通常会使用JavaMail相关的api来完成。后来Spring推出的JavaMailSender工具,进一步简化了邮件的自动发送......
  • 【Python高级编程案例】-第1课时-Python 自带邮件模块自动发送邮件
    importrandomimportstringfromsmtplibimportSMTP_SSLfromemail.mime.textimportMIMETextfromemail.headerimportHeader#发送邮件,参数为收件邮箱地址和验证码defsend_email(receiver,code):sender="测试<[email protected]>"#邮箱账号,签名#......
  • Augus-mail TLS 发送邮件
    Augus-mailTLS发送邮件 Augus-mail是一种邮件发送库,类似于JavaMail。要通过Augus-mail使用TLS发送邮件,流程会与JavaMail非常类似。以下是使用Augus-mail发送带TLS的邮件的基本步骤:步骤1:设置依赖首先,你需要确保项目中包含Augus-mail的依赖。如果你是通过Ma......
  • Nodemailer 概述:在 Nodejs 中轻松发送电子邮件
    nodemailer是一个用于发送电子邮件的node.js模块。这是一个快速概述:transporter:定义电子邮件的发送方式(通过gmail、自定义smtp等)。consttransporter=nodemailer.createtransport({...});登录后复制消息对象:指定电子邮件详细信息,如发件人、收件人、主题和内容(文本/ht......
  • .NET电子邮件高效处理解决方案
    前言在日常软件开发中,电子邮件处理是一个不可或缺的功能,无论是用户注册验证、通知推送还是日常的业务沟通,都离不开电子邮件的支持。今天大姚给大家分享2款.NET开源、高效、强大的.NET电子邮件处理库,这些库不仅简化了电子邮件的发送、接收和管理工作,还提供了丰富的功能和灵活的......
  • Windows 10 使用SMTP向QQ邮箱发送邮件
    一、QQ邮箱开启SMTP服务登录QQ邮箱网页版:https://mail.qq.com。进入设置:右上角点击“设置”图标(齿轮图标)。在下拉菜单中选择“账户”。开启SMTP服务:在“账户设置”页面下,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。点击“开启”旁边的“POP3/SMTP......
  • Python Email库:发送与接收邮件完整指南!
    PythonEmail库如何集成?怎么优化PythonEmail库性能?Python作为一种强大的编程语言,提供了丰富的库来处理电子邮件,其中最著名的就是PythonEmail库。AokSend将深入探讨如何使用PythonEmail库来发送和接收邮件,帮助你掌握这一关键技能。PythonEmail库:安装配置只需确保你的Pyt......
  • python定时发送邮件的功能如何实现自动化?
    Python定时发送邮件教程?如何用Python发送电子邮件?Python定时发送邮件不仅能够帮助我们自动处理日常的邮件发送任务,还能在特定时间点触发邮件发送,确保信息的及时传达。AokSend将详细探讨如何利用Python实现定时发送邮件的自动化功能。python定时发送邮件:配置服务可以使用Gma......