Python unittest 自动识别并执行测试用例方式
作者:释梦燃 发布时间:2023-08-14 07:09:39
标签:Python,unittest,识别,用例
自动化测试执行的用例有很多,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)
来源:https://blog.csdn.net/ShiMengRan107/article/details/80169644


猜你喜欢
- 最近在工作中进行了NLP的内容,使用的还是Keras中embedding的词嵌入来做的。Keras中embedding层做一下介绍。中文文档
- 以一种有意义的方式组织数据可能是一项挑战。有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计。幸运的是,SQ
- 场景:有一个多层嵌套的列表如:[[23],[3,3],[22,22],1,123,[[123,a],2]] 拆分成:def splitlis
- ===操作符: 要是两个值类型不同,返回false 要是两个值都是number类型,并且数值相同,返回true 要是两个值都是stirng,
- 现在有一个xml,格式如下: 代码如下:<date> <item> <id>&nbs
- 今天真的被编码问题一直困扰着,午休都没进行。也真的见识到了各种编码。例如:gbk,unicode、utf-8、ansi、gb2312等。如果
- 网站可用性是任何网站的基本要素,而可用的导航更是网站所必需的要素之一。导航决定了用户如何与网站进行交互。如果没有了可用的导航,那么网站内容就
- Python安装流程:一.下载在网上(输入网址https://www.python.org/downloads/)下载Windows最新的p
- 一行代码实现灰度图抠图抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。基础算法是确定图像二值化分割阈值的大津法,将
- RGB图像转灰度图RGB图像转换为灰度图时通常使用:进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像。#includ
- 很多时候,我们执行页面上某个URL请求的时候,需要有等待的时间。如果是直接的页面跳转,浏览器会有缓冲进度展示,但是如果是AJAX,我觉得应该
- 不是说while就不用,比如前面所列举而得那个猜数字游戏,在业务逻辑上,用while就更容易理解(当然是限于那个游戏的业务需要而言)。另外,
- 背景最近在写一个echarts数据看板,要在一个页面中展示多张图表,所以留给每张图表的尺寸就很小。这也就使得图表x轴的刻度文字全部挤到一起了
- 关于excel多个sheet的导入导出import pandas as pddf = pd.read_excel('test.xls
- 最近面试遇到了一道面试题,顿时有点迷糊,只说出了思路,后来百度了一下,整理了一下思路,于是记录下来,方便以后学习。(面试题请参见附件) 相关
- 负责Web编写的前端人员,都清楚可以通过W3验证服务功能,来在线验证自己编写的XHTML代码是否正确,在验证期间,最容易出现的错误往往都是在
- 就是在mysql命令行登录的时候加上: --pager=more 参数可以使用linux下的more来分页,很好用
- Vue是当下很流行的前端框架,现在我来分享一下用Vue创建项目的流程1、新建一个文件夹,用来创建Vue项目。2、进入到该文件夹,在地址栏内写
- 目录一、环境准备二、问题分析三、spider四、item五、setting六、pipelines七、middlewares八、使用jupyt
- 本文实例讲述了Python二叉树定义与遍历方法。分享给大家供大家参考,具体如下:二叉树基本概述:二叉树是有限个元素的几个,如果为空则为空二叉