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实现获取某天是某个月中的第几周
Feb 11 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
Python AES加密模块用法分析
May 22 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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中的串行化变量和序列化对象
2006/09/05 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
js实现无缝轮播图
2020/03/09 Javascript
python实现人民币大写转换
2018/06/20 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
Django权限控制的使用
2021/01/07 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
公司行政助理岗位职责
2015/04/11 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
《小摄影师》教学反思
2016/02/18 职场文书