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 list语法学习(带例子)
Nov 01 Python
python进阶教程之词典、字典、dict
Aug 29 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
解读Python中degrees()方法的使用
May 18 Python
python3下实现搜狗AI API的代码示例
Apr 10 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Mac安装python3的方法步骤
Aug 09 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Python二元算术运算常用方法解析
Sep 15 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初学者最感迷茫的问题小结
2010/03/27 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
通过修改referer下载文件的方法
2008/05/11 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
详解Document.Cookie
2015/12/25 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python多进程共享变量
2016/04/06 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
应届生自荐信
2014/06/30 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
回复函格式及范文
2015/07/14 职场文书
二胎满月酒致辞
2015/07/29 职场文书
Python简易开发之制作计算器
2022/04/28 Python