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删除特定文件的方法
Jul 30 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
如何用itertools解决无序排列组合的问题
May 18 Python
Python 类的特殊成员解析
Jun 20 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python笔记之代理模式
Nov 20 Python
python 连续不等式语法糖实例
Apr 15 Python
python 模拟在天空中放风筝的示例代码
Apr 21 Python
提取视频中的音频 Python只需要三行代码!
May 10 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
了解一下python内建模块collections
2020/09/07 Python
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
办公室综合文员岗位职责范本
2014/02/13 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技