第一步:用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相关推荐

  1. python接口自动化测试代码_python接口自动化测试二:python代码实现接口测试

    url = '接口地址' r = requests.get(url) #发送get请求 print(r.status_code) #打印状态码,若有重定向,返回的是重定向之后的代码 print(r.h ...

  2. python表单切换_python3 selenium自动化 frame表单嵌套的切换方法

    在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...

  3. java代码的接口_Java代码--简单接口的实现

    Eclipse中新建web项目,项目中新建一个servlet接口,servlet中java代码如下: public void doGet(HttpServletRequest request, Htt ...

  4. java抽象类接口举例代码_Java接口和抽象类实例分析

    本文实例讲述了Java的接口和抽象类.分享给大家供大家参考.具体分析如下: 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相 ...

  5. python 配置文件解析代码_python3从零学习-5.5.2、configparser — 配置文件解析器

    源代码: Lib/configparser.py 此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似. 你 ...

  6. 用python画画简单代码_Python3使用PyQt5制作简单的画板/手写板实例

    1.前言 版本:Python3.6.1 + PyQt5 写一个程序的时候需要用到画板/手写板,只需要最简单的那种.原以为网上到处都是,结果找了好几天,都没有找到想要的结果. 网上的要么是非python ...

  7. python计算时间差代码_Python3显示当前时间、计算时间差及时间加减法示例代码...

    Python3显示当前时间.计算时间差及时间加减法示例代码 摘要 在使用Python写程序时,经常需要输出系统的当前时间以及计算两个时间之间的差值,或者将当前时间加减一定时间(天数.小时.分钟.秒)来 ...

  8. python决策树算法代码_Python3.0 实现决策树算法的流程

    决策树的一般流程 检测数据集中的每个子项是否属于同一个分类 if so return 类标签 Else 寻找划分数据集的最好特征 划分数据集 创建分支 节点 from math import log ...

  9. python连接mysql代码_Python3连接MySQL(pymysql)转账代码

    # coding:utf8 import sys # Python3 采用pymysql 连接MySQL import pymysql class TransferMoney(object): def ...

最新文章

  1. 中国开发者新福利:大模型API接口出炉,让普通用户玩转内容生成
  2. SAP 会计凭证和物料凭证的关系
  3. [Android Pro] 分析 Package manager has died
  4. 两道JVM面试题,竟让我回忆起了中学时代!
  5. bzoj3786: 星系探索
  6. 计算机控制系统的概念构成,计算机控制系统复习
  7. 特征提取(Feature Detection)之——HOG (Histogram of Oriented Gradient)特征
  8. ​WeihanLi.Npoi 根据模板导出Excel
  9. 什么是线程单线程和多线程_什么是多线程?看我多线程七十二变,你能记住吗?...
  10. c语言相邻地址相差多少,C语言内存地址基础
  11. qt制作位图led点阵_LED显示屏知识详细讲解
  12. Python数据结构与算法(1.7)——算法分析
  13. vue全家桶+element-UI
  14. 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
  15. 电脑窗口切换常用的快捷键有哪些
  16. 迅为iTOP-4418开发板Android系统网络测速工具iPerf-TCP测试
  17. 通过PHP使用Google Translate API
  18. 小程序获取收货地址流程
  19. 求和 矩阵迹的性质_怎么证明矩阵特征值的和等于矩阵的迹_
  20. TTS数据制作过程分享

热门文章

  1. ASP.NET页面请求处理
  2. vs2008 sp1补丁安装到最后一点点的时候,就无法安装下去了 解决方法
  3. 【数据仓库】——星型模型和雪花模型
  4. docker 基础之数据管理
  5. 三,springboot集成mybatis
  6. High ASCII字符从bat文件到dos控制台的转化问题
  7. SqlServer数据组织结构
  8. C#中5中timer的比较
  9. 链表基础操作及其逆置
  10. MFC中COMBO BOX的设置