Python unittest 自动识别并执行测试用例方式


Posted in Python onMarch 09, 2020

自动化测试执行的用例有很多,python额测试用例文件,都是以“test”开头的。

TestLoader(defaultTestLoader)是unittest的测试用例加载器,它包括多个加载测试用例的方法。它的结果是返回一个测试套件。本文介绍discover()用法与功能

结构:

discover(start_dir, pattern='test*.py', top_level_dir=None)

作用:找到指定目录下所有测试用例模块,并递归查询子目录下的测试模块,找到匹配的文件进行加载。

解释:

start_dir:需要测试的用例文件目录或是模块

pattern:用例匹配原则

top_level_dir:测试模块的顶层目录,没有就默认None。

例子:

#coding=utf-8
import unittest
 
#定义测试用例的目录为当前目录
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
 
if __name__ == '__main__':
 runner = unittest.TextTestRunner()
 runner.run(discover)

注释:

1)discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py') :匹配查找测试用例文件,以test*.py开头,并将查找到的测试用例组装到测试套件中

2)runner.run(discover) :通过run()函数执行discover

补充知识:unittest框架执行测试并发送邮件

我就废话不多说了,还是直接看代码吧!

#coding=utf8
 
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
import unittest
import time,os
 
#==============定义发送邮件 ===============
 
def send_mail(file_new):
 f = open(file_new,'rb')
 #读取测试报告正文
 mail_body = f.read()
 f.close()
 
 #发送邮件的
 smtpserver = 'smtp.exmail.qq.com'
 
 username = 'fengyanfang@innobuddy.com'
 passwd = 'Fyf136066'
 
 sender = 'fengyanfang@innobuddy.com'
 receiver = ['fengyanfang@innobuddy.com']
 tname = time.strftime('%Y-%m-%d %H-%M-%S',time.localtime())
 header = u'%s 接口自动化测试报告 ' % tname
 
 
# 只发正文,不发附件
 msg = MIMEText(mail_body, 'html', 'utf-8')
 msg['Subject'] = Header('自动化测试报告', 'utf-8')
 msg['Header'] = header
 msg['From'] = sender
 msg['To'] = ",".join(receiver)
 
 
 #连接发送邮件
 # 发送邮件,端口用465, keyfile = 'vxkdfejinpifbeaj'
 smtp = smtplib.SMTP_SSL(smtpserver, 465)
 
 smtp.helo(smtpserver)
 smtp.ehlo(smtpserver)
 
 smtp.login(username, passwd)
 smtp.sendmail(sender, receiver, msg.as_string())
 
 smtp.quit()
 
 
#======================查找最新的测试报告==========================
 
def new_report(testreport):
 #方式1:
 # lists = os.listdir(testreport)
 # lists.sort(key = lambda fn: os.path.getmtime(testreport + '\\' + fn))
 # file_new = os.path.join(testreport,lists[-1])
 # print(file_new)
 # return file_new
 
 #方式2:
 dirs = os.listdir(testreport)
 dirs.sort()
 newreportname = dirs[-1]
 print('The new report name: {0}'.format(newreportname))
 file_new = os.path.join(testreport, newreportname)
 return file_new
 
if __name__ == '__main__':
 #获取当前的项目目录UskidInterface
 testdir = os.path.dirname(os.path.dirname(__file__))
 
 test_dir = os.path.join(testdir,'testcase')
 test_report = os.path.join(testdir, 'report')
 discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
 
 now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime())
 filename = test_report+'/result_'+now+'.html'
 fp = open(filename,'wb')
 
 #stream放生成报告的路径
 runner = HTMLTestRunner(stream=fp,title="测试报告",description='用例执行情况:')
 runner.run(discover)
 fp.close()
 
 new_report = new_report(test_report)
 send_mail(new_report)

以上这篇Python unittest 自动识别并执行测试用例方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python访问MySQL封装的常用类实例
Nov 11 Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
python访问类中docstring注释的实现方法
May 04 Python
Python实现文件复制删除
Apr 19 Python
Python性能提升之延迟初始化
Dec 04 Python
Python编程argparse入门浅析
Feb 07 Python
python基于http下载视频或音频
Jun 20 Python
python3实现表白神器
Apr 09 Python
python常用数据重复项处理方法
Nov 22 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python批量创建变量并赋值操作
Jun 03 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 #Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 #Python
python shell命令行中import多层目录下的模块操作
Mar 09 #Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 #Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 #Python
Python如何存储数据到json文件
Mar 09 #Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 #Python
You might like
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
javascript 写类方式之六
2009/07/05 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python中super函数用法实例分析
2019/03/18 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
园林资料员岗位职责
2013/12/30 职场文书
在校学生职业规划范文
2014/01/08 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
出纳担保书范文
2014/04/02 职场文书
自我推荐信范文
2014/05/09 职场文书
给学校的建议书范文
2014/05/15 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
运动会800米赞词
2015/07/22 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang