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 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Python中实现对list做减法操作介绍
Jan 09 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
python如何求解两数的最大公约数
Sep 27 Python
python实现停车管理系统
Nov 30 Python
python定时检测无响应进程并重启的实例代码
Apr 22 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
python pandas时序处理相关功能详解
Jul 03 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python实现简单猜数字游戏
Feb 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、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
学习node.js 断言的使用详解
2019/03/18 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python判断两个对象相等的原理
2017/12/12 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Django开发中的日志输出的方法
2018/07/02 Python
Python基于百度云文字识别API
2018/12/13 Python
对python中的argv和argc使用详解
2018/12/15 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
RealTek面试题
2016/06/28 面试题
广告业务员岗位职责
2015/02/13 职场文书
道歉情书大全
2015/05/12 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python