python接口自动化代码_python3接口自动化-run_all_case
第一步:用discover方法加载所有的测试用例
1.cur_path这个参数是读取当前这个脚本的真实路径,也就是run_main.py的真实路径
2.caseName="case"这个case是存放测试用例的文件夹,如果没有的话,自动创建。如果想运行其它文件夹的用例,就改下caseName这个参数值
3.rule="test*.py"这个是匹配用例脚本名称的规则,默认匹配test开头的所有用例
1 importunittest2 importos3
4 #当前脚本所在文件真实路径
5 cur_path = os.path.dirname(os.path.abspath(__file__))6
7 def add_case(caseName="case",rule="test*.py"):8 ‘‘‘第一步:加载所有的测试用例‘‘‘
9 case_path = os.path.join(cur_path,caseName) #用例文件夹
10 #定义discover方法的参数
11 discover =unittest.defaultTestLoader.discover(case_path,12 pattern=rule,13 top_level_dir=None)14
15 return discover
第二步:生成HTML报告
1.把上一步加载到用例的参数传入这个函数,测试报告的文件名称默认report文件夹:reportName="report
2.如果没有这个report文件夹也没关系,可以自动创建的
1 def run_case(all_case,reportName="report"):2 ‘‘‘第二步:执行所有的用例,并把结果写入HTML测试报告‘‘‘
3 now = time.strftime("%Y_%m_%d_%H_%M_%S")4 report_path = os.path.join(cur_path,reportName) #报告文件夹
5 #如果不存在就创建
6 if notos.path.exists(report_path):7 os.mkdir(report_path)8
9 report_abspath = os.path.join(report_path,now+"result.html")10 fp = open(report_abspath,"wb")11 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,12 title="自动化测试报告",13 description="用例执行情况")14
15 #调用add_case返回值
16 runner.run(all_case)17 fp.close()
第三步:获取最新的测试报告
1.如果第二步生成的测试报告加了时间戳,想找到最新的文件就用第三步
2.如果第二步不加时间戳,只是生成result.html,那这一步其实没卵用,可以忽略
(个人觉得报告用一个名称result.html就行,新的自动覆盖旧的)
1 defget_report_file(report_path):2 ‘‘‘第三步:获取最新的测试报告‘‘‘
3 lists =os.listdir(report_path)4 lists.sort(key=lambdafn:os.path.getmtime(os.path.join(report_path,fn)))5 print("最新测试报告:"+lists[-1])6 #找到最新生成的测试报告
7 report_file = os.path.join(report_path,lists[-1])8 return report_file
第四步:发送测试报告到邮箱
1.像QQ邮箱这种ssl加密的就走SMTP_SSL,用授权码登录
2.其它邮箱就正常账号密码登录,走SMTP
1 defsend_mail(sender,psw,receover,smtpserver,report_file,port):2 ‘‘‘第四步:发送最新的测试报告‘‘‘
3 with open(report_file,"rb") as f:4 mail_body =f.read()5
6 #定义邮件内容
7 msg =MIMEMultipart()8 body =MIMEText(mail_body,_subtype="html",_charset="utf-8")9 msg["Subject"] = "自动化测试报告"
10 msg["from"] =sender11 msg["to"] =psw12 msg.attach(body)13
14 #添加附件
15 att = MIMEText(open(report_file,"rb").read(),"base64","utf-8")16 att["Content-Type"] = "application/octet-stream"
17 att["Content-Disposition"] = "attachment; filename = ‘report.html‘"
18 msg.attach(att)19 try:20 smtp =smtplib.SMTP_SSL(smtpserver,port)21 except:22 smtp =smtplib.SMTP()23 smtp.connect(smtpserver,port)24
25 #用户名密码
26 smtp.login(sender,psw)27 smtp.sendmail(sender,receover,msg.as_string())28 smtp.quit()29 print("test report email has send out")
最后执行代码
1.这里邮箱的内容读的配置文件
1 if __name__ == "__main__":2 all_case = add_case() #1 加载用例
3 #生成测试报告路径
4 run_case(all_case) #2 执行用例
5 report_path = os.path.join(cur_path,"report") #用例文件
6 report_file = get_report_file(report_path) #3 获取最新测试报告
7 #邮箱配置
8 from config importreadConfig9 sender =readConfig.sender10 psw =readConfig.psw11 smtp_server =readConfig.smtp_server12 port =readConfig.port13 receiver =readConfig.receiver14 send_mail(sender,psw,receiver,smtp_server,report_file,port) #4 最后一步发送报告
python接口自动化代码_python3接口自动化-run_all_case相关推荐
- python接口自动化测试代码_python接口自动化测试二:python代码实现接口测试
url = '接口地址' r = requests.get(url) #发送get请求 print(r.status_code) #打印状态码,若有重定向,返回的是重定向之后的代码 print(r.h ...
- python表单切换_python3 selenium自动化 frame表单嵌套的切换方法
在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...
- java代码的接口_Java代码--简单接口的实现
Eclipse中新建web项目,项目中新建一个servlet接口,servlet中java代码如下: public void doGet(HttpServletRequest request, Htt ...
- java抽象类接口举例代码_Java接口和抽象类实例分析
本文实例讲述了Java的接口和抽象类.分享给大家供大家参考.具体分析如下: 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相 ...
- python 配置文件解析代码_python3从零学习-5.5.2、configparser — 配置文件解析器
源代码: Lib/configparser.py 此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似. 你 ...
- 用python画画简单代码_Python3使用PyQt5制作简单的画板/手写板实例
1.前言 版本:Python3.6.1 + PyQt5 写一个程序的时候需要用到画板/手写板,只需要最简单的那种.原以为网上到处都是,结果找了好几天,都没有找到想要的结果. 网上的要么是非python ...
- python计算时间差代码_Python3显示当前时间、计算时间差及时间加减法示例代码...
Python3显示当前时间.计算时间差及时间加减法示例代码 摘要 在使用Python写程序时,经常需要输出系统的当前时间以及计算两个时间之间的差值,或者将当前时间加减一定时间(天数.小时.分钟.秒)来 ...
- python决策树算法代码_Python3.0 实现决策树算法的流程
决策树的一般流程 检测数据集中的每个子项是否属于同一个分类 if so return 类标签 Else 寻找划分数据集的最好特征 划分数据集 创建分支 节点 from math import log ...
- python连接mysql代码_Python3连接MySQL(pymysql)转账代码
# coding:utf8 import sys # Python3 采用pymysql 连接MySQL import pymysql class TransferMoney(object): def ...
最新文章
- 中国开发者新福利:大模型API接口出炉,让普通用户玩转内容生成
- SAP 会计凭证和物料凭证的关系
- [Android Pro] 分析 Package manager has died
- 两道JVM面试题,竟让我回忆起了中学时代!
- bzoj3786: 星系探索
- 计算机控制系统的概念构成,计算机控制系统复习
- 特征提取(Feature Detection)之——HOG (Histogram of Oriented Gradient)特征
- ​WeihanLi.Npoi 根据模板导出Excel
- 什么是线程单线程和多线程_什么是多线程?看我多线程七十二变,你能记住吗?...
- c语言相邻地址相差多少,C语言内存地址基础
- qt制作位图led点阵_LED显示屏知识详细讲解
- Python数据结构与算法(1.7)——算法分析
- vue全家桶+element-UI
- 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
- 电脑窗口切换常用的快捷键有哪些
- 迅为iTOP-4418开发板Android系统网络测速工具iPerf-TCP测试
- 通过PHP使用Google Translate API
- 小程序获取收货地址流程
- 求和 矩阵迹的性质_怎么证明矩阵特征值的和等于矩阵的迹_
- TTS数据制作过程分享