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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
Python中return语句用法实例分析
Aug 04 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
Python类及获取对象属性方法解析
Jun 15 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
Django如何创作一个简单的最小程序
May 12 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
由php if 想到的些问题
2008/03/22 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
script标签属性type与language使用选择
2012/12/02 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
python使用7z解压apk包的方法
2015/04/18 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
艺术应用与设计个人的自我评价
2013/11/23 职场文书
就业自荐信
2013/12/04 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
物理教学随笔感言
2014/02/22 职场文书
元旦促销方案
2014/03/15 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
《静夜思》教学反思
2016/02/17 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python