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中实现两个字典(dict)合并的方法
Sep 23 Python
Python判断操作系统类型代码分享
Nov 22 Python
Python编写简单的HTML页面合并脚本
Jul 11 Python
对Python3中的input函数详解
Apr 22 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
Python selenium自动化测试模型图解
Apr 15 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
Python入门学习之类的相关知识总结
May 25 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
如何用php获取文件名后缀
2013/06/09 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python实现excel转sqlite的方法
2017/07/17 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python os.access()用法实例
2019/02/18 Python
Python for循环与getitem的关系详解
2020/01/02 Python
浅谈django channels 路由误导
2020/05/28 Python
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
2013届毕业生求职信范文
2013/11/20 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
优秀班主任申报材料
2014/12/16 职场文书
小学生读书笔记范文
2015/06/30 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书