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 08 Python
Python 文件读写操作实例详解
Mar 12 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python numpy格式化打印的实例
May 14 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
Python读取和写入Excel数据
Apr 20 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/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
JS target与currentTarget区别说明
2011/08/28 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
python基础练习之几个简单的游戏
2017/11/10 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python爬虫基础之urllib的使用
2020/12/31 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
运动会5000米加油稿
2015/07/21 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
python pygame入门教程
2021/06/01 Python
frg-100简单操作(设置)说明
2022/04/05 无线电