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调用cmd命令行制作刷博器
Jan 13 Python
python中管道用法入门实例
Jun 04 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python中super()函数简介及用法分享
Jul 11 Python
Python 反转字符串(reverse)的方法小结
Feb 20 Python
python实现textrank关键词提取
Jun 22 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
python实现决策树分类(2)
Aug 30 Python
Python异常的检测和处理方法
Oct 26 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
深入了解Python 变量作用域
Jul 24 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日历[测试通过]
2008/03/27 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
vue实现防抖的实例代码
2021/01/11 Vue.js
JavaScript WeakMap使用详解
2021/02/05 Javascript
Python列表推导式的使用方法
2013/11/21 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
期末总结的个人自我评价
2013/11/02 职场文书
初中生个人学习的自我评价
2013/12/04 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
《画风》教学反思
2014/04/16 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
晚会开场白和结束语
2015/05/29 职场文书
工作经历证明范本
2015/06/15 职场文书