这里说一下踩过的坑

1、发送给某人,某人电脑最好已经安装java-jdk,allure我发送给别人的时候,使用脚本运行打开index.html渲染文件,提示缺少环境.我自己则不会提示

2、写脚本文件的时候windows要写bat后缀的脚本,我写成了linux的sh的脚本,别人也打不开

3、以为发送整个文件夹给别人,别人运行index.html就能渲染出结果,错,allure的渲染要启动服务,简而言之,访问本地index.html是不可行的

2.新增一个文件smtp_email_send.py  复制下面的发送邮件+压缩文件代码

3.新增一个test_01.py  复制下面的测试用例代码

4.平级新增一个send_dir文件夹,下载一个allure-2.9.0,解压放到send_dir 里面

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

5.平级新增一个clickme.sh 或者click.bat   代码在后面

  • .发送邮件+压缩文件的方法
import os
import smtplib
import zipfile
from email.mime.text import MIMEText #正文用
from email.header import Header #标题用
from email.utils import formataddr
class SendEmail:
    def __init__(self,fujian_name,dirpath,outFullName):
        self.fujian_name = fujian_name
        self.dirpath = dirpath
        self.outFullName = outFullName
        def run(self):
        send_User ="186660538@163.com"  #邮箱地址
        send_Password = "IGZU66PZLHVGAOEV"  #163邮箱的smtp密码
        send_Smtp = "smtp.163.com"  #使用的邮箱smtp官方地址
        addreSsee = "xxxx@qq.com"  #收件箱地址
        #发送的附件内容
        # msg = MIMEText('hh', 'base64', 'utf-8')  # 数据编码方式是utf-8
        msg = MIMEText(open(self.fujian_name,'rb').read(),"base64","utf-8")
        msg['Content-Type']='application/octet-stream'
        msg["Content-Disposition"] = 'attachment; filename='+ self.fujian_name
        # 第一种发件人方式:
        msg['From'] = send_User  # 发件人,声明收到邮件的时候发件人显示用(11不能写中文)
        print(type(msg['From']))  # 是一个email的对象
        msg['Subject'] = Header(u'疯猫猫的邮件', 'utf-8').encode()  #  u一般用在中文字符串前面,防止因为源码储存格式问题
        msg['To'] = u'傻子'  # 收件人的名字(随便取)
        # print(msg)  # 打印发送给接受的数据
        # print(type(msg))
        # 实例化一个邮箱
        smtp = smtplib.SMTP()
        smtp.connect(send_Smtp, 25)  # 这是发送出去的邮箱的smtp的地址和默认端口
        smtp.login(send_User, send_Password)  # 这是登录的账号和smtp密码,用于除了网页以外的客户端登录
        # 发送邮件,传入发送账号,接收账号,将from和to subject当做字符串传入
        smtp.sendmail(send_User, [addreSsee, ], msg.as_string())
        smtp.quit()  # 关闭连接
    def zipDir(self):
        zip = zipfile.ZipFile(self.outFullName, "w", zipfile.ZIP_DEFLATED)
        for path, dirnames, filenames in os.walk(self.dirpath):
            # 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
            fpath = path.replace(self.dirpath, '')
            for filename in filenames:
                zip.write(os.path.join(path, filename), os.path.join(fpath, filename))
        zip.close()
        print('压缩成功')
#调试尝试一下是否调通
#a = SendEmail('test_01.py',r'send_dir',r"send_dir.zip")
# a.run()
# a.zipDir()
  • 这是测试用例的代码
# coding=gbk
import os
import time
import pytest
import smtp_email_send
class TestClass:
    def test_one(self):
        a="hh"
        assert "h" in a
    def test_two(self):
        b = 'dd'
        assert "dd" in b
if __name__ == '__main__':
    # --alluredir  生成allure报告需要的数据文件
    pytest.main(['test_01.py', '-vs', '--alluredir', './tmp', '--clean-alluredir'])
    os.system("allure generate ./tmp --clean")
    time.sleep(10)
    # 判断是否存在,存在先删除
    if os.path.exists('send_dir.zip'):
        os.system('del -s -q send_dir.zip')
    if os.path.exists('send_dir\\allure-report'):
        os.system(r'rmdir /s /q send_dir\\allure-report')
    # # 移动文件到send_dir里面,allure-2.9.0 已经在了send_dir 不能删除
    os.system('move allure-report send_dir')
    a = smtp_email_send.SendEmail('send_dir.zip', r'send_dir', r"send_dir.zip")
    # 压缩文件夹
    a.zipDir()
    time.sleep(10)
    #默认发送当前文件夹下的allure-report.zip
    # 调取发送邮件接口,传入文件参数
    a.run()
  • linux的sh脚本
#!/bin/bash
cd allure-2.9.0
cd bin
allure open ../../allure-report
  •  bat批处理文件脚本
cd allure-2.9.0
cd bin
allure open ../../allure-report
框架代码已封装 小白 3行代码即可实现接口自动化 使用教程:https://blog.csdn.net/weixin_41121249/article/details/125162171?spm=1001.2014.3001.5502 框架搭建历程如下 1pytest插件,运行规则以及参数,pytest.ini配置文 件,跳过用例,用例执行顺序,夹具等 2Fixture固件,contest.py,断言以及Allure报告生成! 3Allure报告定制以及Parametrize数据驱动 4requests模块详解以及Cookie,Session关联处理 5接口统一请求封装和接口关联封装 6接口自动化框架封装之规范YAML测试用例&接口关联封装改进&基础路径封装改进 7热加载封装以及断言封装 8数据类型处理以及DDT数据驱动封装 9异常日志与BaseUrl封装 前面小编介绍过如何通过钉钉机器人在钉钉群中发送禅道的缺陷内容,今天小编在这里介绍如何将统计好的测试结果和allure报告一起发送到钉钉群中,这样群里的同事,直接可以点击使用,方便更快的了解到自动化结果的执行情况。 小编先编写几个简单的用例,然后通过allure生成测试报告。 # coding:utf-8 import pytest class TestCase: def __init__(self): self.tool = Tool() self.tool.mail_from_user_host = 'smtp.exmail.qq.com' self.tool.mail_from_user = 'mail.com' self.tool.mail_from_user_pwd
生成allure报告 安装完成后打开“Manage Jenkins” --> “Global tool Configuration” --> “Allure Commandline” 勾选自动安装,版本选择最新版就可以了 执行shellpytest --alluredir ./allure_report ${WORKSPACE}是Jenkins的环境变量,表示当前的工作目录 构建...
在运行代码的服务器本机安装allure-pytest:pip install allure-pytest 安装jenkins的allure插件:打开jenkins首页-系统管理-管理插件-可选插件,搜索Allure下载并安装 安装完成后jenkins首页-全局工具配置-Allure Commandline, 安装 allure 命令行工具 3.使用allure测试报告框架对pytest生成的测试报告进行美化和展示。 4.使用Jenkins进行自动化构建和测试,通过配置Jenkins项目,将测试脚本自动集成到Jenkins中。 具体实现步骤如下: 1.安装Python、requests库、pytest框架、allure测试报告框架。 2.编写测试脚本,使用requests库发送HTTP请求并验证响应结果。使用pytest框架运行测试脚本。 3.使用allure测试报告框架对pytest生成的测试报告进行美化和展示,生成测试报告。 4.在Jenkins中创建一个新项目,配置Git仓库地址和构建脚本,将测试脚本自动集成到Jenkins中。 5.在Jenkins中配置邮件通知,当构建失败或测试用例出错时,自动发送邮件通知相关人员。 6.使用Jenkins进行自动化构建和测试。每次代码提交后,Jenkins会自动构建并运行测试脚本,生成测试报告,并将测试报告发送给相关人员。 以上就是python+requests+pytest+allure+Jenkins框架的实现步骤。