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)

以上这篇Python unittest 自动识别并执行测试用例方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python unittest单元测试框架的使用

    一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复操作,数据)都混合在一起. 2.优点:每个脚本相对独立,且不产生其他依赖和调用.任何一个测试用例脚本拿出来都可以单独执行. 3.缺点:开发成本高,用例之间存在重复的操作.比如重复的用户登录和退出. 维护成本高,由于重复的操作,当重复的操作发生改变时,则需要逐一进行脚本的修改. 4.线性测试实例:用户

  • Python unittest工作原理和使用过程解析

    这篇文章主要介绍了Python unittest工作原理和使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.unittest的工作原理: TestCase:一个testcase就是一条测试用例. setUp:测试环境的准备 tearDown:测试环境的还原 run:测试执行 TestSuite:测试套件或集合,多个测试用例的集合就是1个suite,一个suite可以包含多条测试用例,测试套件suite里面也可以嵌套测试套件suit

  • Python实现性能自动化测试竟然如此简单

    一.思考❓❔ 1.什么是性能自动化测试? 性能系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试使用程序代替手工提升测试效率性能自动化使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数,统计系统负载能力生成报告 2.Python中的性能自动化测试库? locust库 使用Python使用代码来创建批量用户分布式可以在多台服务器上,进行分布式性能测试可伸缩性强稳定.应用广泛经得住各种场景下的考验基于web ui界面展示测试详情能测任何系统 二.基础操作

  • Python unittest 自动识别并执行测试用例方式

    自动化测试执行的用例有很多,python额测试用例文件,都是以"test"开头的. TestLoader(defaultTestLoader)是unittest的测试用例加载器,它包括多个加载测试用例的方法.它的结果是返回一个测试套件.本文介绍discover()用法与功能 结构: discover(start_dir, pattern='test*.py', top_level_dir=None) 作用:找到指定目录下所有测试用例模块,并递归查询子目录下的测试模块,找到匹配的文件进行

  • 一篇文章搞懂Python Unittest测试方法的执行顺序

    目录 Unittest 回到主题 源码初窥 回到问题的本质 1. 以字典序的方式编写test方法 2. 回归本质,从根本解决问题 总结 Unittest unittest大家应该都不陌生.它作为一款博主在5-6年前最常用的单元测试框架,现在正被pytest,nose慢慢蚕食. 渐渐地,看到大家更多的讨论的内容从unittest+HTMLTestRunner变为pytest+allure2等后起之秀. 不禁感慨,终究是自己落伍了,跟不上时代的大潮了. 回到主题 感慨完了,回到正文.虽然unitte

  • Python unittest discover批量执行代码实例

    代码如下 import unittest dir = "D:\\work_doc\\pycharm2\\python_Basics" #自动化用例所存放的路径 suit = unittest.defaultTestLoader.discover(dir,pattern="XFS*.py",top_level_dir=None) #匹配出需要执行的py文件 runner = unittest.TextTestRunner() #TextTestRunner类实例化,目

  • python+unittest+requests实现接口自动化的方法

    前言: Requests简介 Requests 是使用Apache2 Licensed许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 总之,大家建议大家用Requests吧. Requests的官方文档:http://cn.python-requests.org

  • Python+unittest+requests 接口自动化测试框架搭建教程

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm,在pycharm中创建项目功能目录.如果不会的可以百度Google一下,该内容网上的讲解还是比较多比较全的! 大家可以先简单了解下该项目的目录结构介绍,后面会针对每个文件有详细注解和代码. common: --configDb.py:这个文件主要编写数据库连接池的相关内容,本项目暂未考虑使用数据库

  • Python+unittest+requests+excel实现接口自动化测试框架

    环境:python3 + unittest + requests Excel管理测试用例, HTMLTestRunner生成测试报告 测试完成后邮件发送测试报告 jsonpath方式做预期结果数据处理,后期多样化处理 后期扩展,CI持续集成 发送邮件效果: 项目整体结构: common模块代码 class IsInstance: def get_instance(self, value, check): flag = None if isinstance(value, str): if chec

  • Python Unittest自动化单元测试框架详解

    本文实例为大家分享了Python Unittest自动化单元测试框架的具体代码,供大家参考,具体内容如下 1.python 测试框架(本文只涉及 PyUnit) 参考地址 2.环境准备 首先确定已经安装有Python,之后通过安装PyUnit,Python版本比较新的已经集成有PyUnit(PyUnit 提供了一个图形测试界面UnittestGUI.py) 参考:查看地址 3.代码实例 使用的IDE为 PyCharm,DEMO结构如图 1.简单地一个实例 # Test002_Fail.py #

  • Python unittest单元测试框架总结

    什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入相同 (2)输入复数,比如-1.-1.2.-0.99,期待返回值与输入相反 (3)输入0,期待返回0 (4)输入非数值类型,比如None.[].{}.期待抛出TypeError 把上面这些测试用例放到一个测试模块里,就是一个完整的单元测试  unittest工作原理 unittest中最核心的四部分

  • Python unittest 简单实现参数化的方法

    Python unittest 理论上是不建议参数驱动的,其用例应该专注单元测试,确保每个method的逻辑正确. 引用Stack Overflow的一个答案, "单元测试应该是独立的,没有依赖项的.这确保了每个用例都有非常具体而专一的测试反应.传入参数会破坏单元测试的这个属性,从而使它们在某种意义上无效.使用测试配置是最简单的方法,也是更合适的方法,因为单元测试不应该依赖外部信息来执行测试.那应该集成测试要做的." 但是实际操作过程中,时不时还是有控制入参的需求的.比如,我想简单实现

随机推荐