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的Django框架中的表单处理示例
Jul 17 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python机器学习实现决策树
Nov 11 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
python函数指定默认值的实例讲解
Mar 29 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遍历二维数组的代码
2011/04/22 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
php表单处理操作
2017/11/16 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
python使用socket连接远程服务器的方法
2015/04/29 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
班组长安全职责
2014/01/05 职场文书
2014年度个人工作总结
2014/11/07 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书