分享好友 行情首页 行情分类 切换频道
python:unittest之discover()方法批量执行用例
2024-12-21 23:10  浏览:83

自动化测试过程中,自动化覆盖的功能点和对应测试用例之间的关系基本都是1 VS N,如果每次将测试用例一个个单独执行,不仅效率很低,

无法快速反馈测试结果,而且维护起来很麻烦。在python的单元测试框架unittest中,提供了批量执行的测试用例的方法。

这篇博客,介绍下unittest框架的常用类和方法,以及利用discover()方法批量执行测试用例的方法。。。

官方文档:unittest单元测试框架

 

一、unittest框架

首先介绍一下unittest框架和执行测试用例相关的几个模块:

1、TestCase()类

TestCase类的实例表示unittest中的逻辑测试单元,此类旨在用作基类,具体测试由具体的子类实现。该类实现了测试运行器所需的接口,以允许它驱动测试,

以及测试代码可用于检查和报告各种故障的方法。每个实例都将运行unittest的一个名为methodName的基本方法。

 

2、setUp()方法

该方法的主要作用是用来初始化测试环境,它在测试用例执行之前立即调用,除了AssertionError或SkipTest,通过该方法产生的任何异常都将被认为是错误的。

只有测试成功执行,才会被调用,默认什么都不做。

 

3、tearDown()方法

该方法的主要作用是在测试用例执行完毕后记录测试结果并恢复测试环境,即使出现异常,也会调用此方法。

 

4、run()方法

该方法的作用是运行测试用例,将测试结果收集到TestResult中作为传递的对象。

如果省略结果或者用None创建临时结果对象(通过调用defaultTestResult()方法),结果对象会返回给run()的调用者。

 

5、defaultTestResult()方法

该方法返回应该用于此测试用例类的测试结果作为实例(如果没有其他结果,实例应返回给run()方法)。

 

6、TestSuite()类

该类代表单个测试用例和测试套件的集合。它提供了运行测试所需的接口以使其可以像其他测试一样运行。TestSuite实例和遍历套件相同,单独运行每个测试用例。

TestSuite的行为和TestCase非常相似,但它并未实际执行测试,而是用于将测试用例聚合到一起,下面的2个方法用于向TestSuite实例中添加测试用例:

addTest():添加测试用例到TestCase或TestSuite套件中;

addTests():将迭代TestCase和TestSuite实例中的所有测试用例添加到此测试组件,相当于调用addTest()的每个元素。

 

7、TestLoader()类

所述TestLoader类被用来创建类和模块的测试套件。通常不需要创建该类的实例。unittest框架提供了一个可以共享的实例unittest.defaultTestLoader。

 

8、discover()方法

start_dir:要测试的模块名或测试用例目录;

pattern='test*.py':表示用例文件名的匹配原则,下面的例子中匹配文件名为以“test”开头的“.py”文件,星号“*”表示任意多个字符;

top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None;

该方法通过从指定的开始目录递归到子目录中查找所有测试模块,并返回包含它们的TestSuite对象,只有与模式匹配测试文件和可导入的模块名称才会被加载。

所有测试模块必须可以从项目的顶层导入,如果起始目录不是顶层目录,则顶层目录必须单独指定。

如果一个测试文件的名称符合pattern,将检查该文件是否包含 load_tests() 函数,如果 load_tests() 函数存在,则由该函数负责加载本文件中的测试用例。

如果不存在,就会执行loadTestsFromModule(),查找该文件中派生自TestCase 的类包含的 test 开头的方法。

 

9、TestResult()类

该类用于记录哪些测试成功或失败的信息。一个TestResult对象存储一组测试的结果,在TestCase和TestSuite中保证结果正确记录。

测试框架u需要访问TestResult作为报告目的运行一组测试所生成的对象,为此目的TestResult和方法返回一个实例 。

 

二、addTest()实例

举个例子来说,如果测试用例有下面这些:

使用addTest()方法执行测试用例,示例代码如下:

可以看出需要进行很多的用例导入和添加操作,如果用例成百上千条,那么这将是一场灾难!!!

 

三、discover()使用实例

还是上面的那些测试用例,这次使用discover()方法批量执行用例,示例代码如下:

相比于addTest()方法,discover()方法更方便高效,也可以提高测试反馈速率。

PS:使用discover()方法,切记测试用例中需要执行的测试方法必须以test开头,否则无法加载!!!

 

以上就是关于unittest框架的一些常用类和方法的介绍,以及批量执行测试用例的2种方法,仅供参考。。。

    以上就是本篇文章【python:unittest之discover()方法批量执行用例】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/quote/2631.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
单反 手机(单反手机是什么意思)
  单反手机:摄影的新纪元  随着科技的飞速发展,手机的功能越来越强大,其中摄影功能尤为突出。如今,我们迎来了一个新的时
酷派手机图片(酷派手机壁纸)
  酷派手机图片:展现时尚与科技的完美结合  在当今智能手机市场,酷派手机以其独特的风格和卓越的性能赢得了广大消费者的喜
手机qq的文件在哪个文件夹(手机qq的文件在哪儿)
  《手机QQ的文件在哪个文件夹》  随着科技的进步,手机已成为我们日常生活中不可或缺的一部分。手机QQ作为我们常用的社交软
12306修改手机号(12306修改手机号收不到验证码)
  关于《12306修改手机号》的文章  在当今数字化时代,手机已成为我们生活中不可或缺的一部分。对于经常乘坐火车出行的人来
手机的介绍(手机的介绍资料)
  手机的介绍  随着科技的飞速发展,手机已经成为了我们日常生活中不可或缺的一部分。它的影响力已经渗透到我们生活的各个领
2000以内的手机(2000以内的手机哪款性价比高2024年)
  关于《2000元以内的手机》的文章  随着科技的飞速发展,手机已经成为我们日常生活中不可或缺的一部分。在预算仅为2000元的
手机两个微信(手机两个微信怎么取消默认授权设置)
  手机两个微信的使用与探讨  随着科技的快速发展,微信已经成为我们日常生活中不可或缺的一部分。很多人在手机中安装两个微
手机怎么隐藏游戏(手机怎么隐藏游戏不被发现)
  手机怎么隐藏游戏  随着智能手机的普及,很多人都会在手机上玩游戏。但有时我们并不想被别人知道我们在玩游戏,或者我们需
华为定制版手机(华为定制版手机有哪些)
  华为定制版手机:科技与个性的完美结合  随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的一部分。在众多手
手机密码忘记(手机密码忘记了怎么办才能解开oppo)
  关于手机密码忘记的问题  随着智能手机的普及,我们的生活已经离不开手机。然而,有时候我们会遇到一些小问题,其中之一就
本企业新闻
推荐企业新闻
发表评论
0评