Unittest框架/DDT数据驱动

介绍前,思考以下问题

  • 测试数据如何自动化清除(运行前和运行后)
  • 多个测试用例,如何组织在一起执行
  • 多个测试用例的结果,如何展示在一份报告上

01:什么是Unittest

是python自带的单元测试框架(不需要安装),主要适用于单元测试,可以对多个测试用例进行管理和封装

Unittest也叫pyunit,它提供了很多类和方法来处理各种测试工作

单元测试-用一部分代码测试另一部分代码

02:四大功能组成

(一)测试用例----testcase 

    • 测试用例必须在类中
    • 测试用例所在的类,必须继承Unittest.TestCase
    • 测试用例的方法名称必须以test开头
    • 测试用例的执行顺序,按照Ascill码顺序(0~9,A~Z,a~z)
    • 利用父类TestCase的assertXXXX方法来断言
    • 用@unittest.skip(reason)装饰来跳过测试用例

(二)测试固件----testfixture

    • 也叫测试夹件,主要工作是【初始化和善后】
    • 测试固件分为两种,一种是类级别的,一种是方法级别的
    • 类级别的测试固件,所有测试用例执行之前与之后运行一次
    • 方法级别的测试固件,每个测试用例执行之前与之后都运行一次

1.示例一代码(方法级别):

运行结果(鼠标顶格运行 ):

2.示例二代码(类级别):

运行结果:

3.断言assert

断言失败的话,用例2之后的测试用例不执行

由此得出Unittest缺点--不能批量执行测试用例

改造Unittest自己的assert:self.assertEqual

报错后可继续执行下面的用例,且打印到测试报告中

4.跳过某个测试用例 

使用@unittest.skip(reason)装饰

(三)测试套件----testsuite

    • 是用来组织测试用例的
    • 如:

方法一:用例逐个添加到suite

import unittest
# 1构建测试套件test_suite
# 1-1 方法一:逐个添加到suite
suit = unittest.TestSuite()
suit.addTest(UnittestDemo('test_001'))
suit.addTest(UnittestDemo('test_002'))

方法二:用例放入列表中,再添加到suite

suite = unittest.TestSuite()
list=[类名1("方法名1"),类名2("方法名2")]
suite.addTests(list)

例:
list=[UnittestDemo('test_001'),UnittestDemo('test_002')]
suite.addTests(list)

方法三:通过TestLoader类的discover 方法来

suite = unittest.defaultTestLoader.discover('用例所在的模块', pattern="*通配*.py")

discover(start_dir,pattern='test*.py',top_level_dir=None)

-case_dir:这个是待执行用例的目录。

-pattern:这个是匹配脚本名称的规则,test*.py 意思是匹配 test 开头的所有脚本。

-top_level_dir:这个是顶层目录的名称,一般默认等于 None 就行了。

(四)测试运行器----testrunner

  • 是用来执行测试用例的
  • 第一种输出方法
runner=unittest.TextTestRunner() #实例化TestRunner类
runner.run(suite)#执行用例

03: HTMLTestRunner--输出报告

ClassicHTMLTestRunner下载解压

放在此下目录,整个项目可通用

导入:

from ClassicHTML.TestRuner  import HTML.TestRunner

  • 第二种输出方法,使用HTMLTestRunner
runner = HTML.TestRunner(tester = '测试报告人','title'='测试报告',
                         description='接口测试报告'.stream = '文件路径',verbosity=2#详细描述)
runner.run(suite)

04:DDT数据驱动

解决问题:如何解决批量运行问题

ddt官方文档地址:https://pypi.org/project/ddt/

安装:

pip install ddt

​导入:

from ddt import ddt,data,unpack
  • ddt.ddt:装饰类,也就是继承TestCase的类。
  • ddt.data:装饰测试方法,参数是一系列的值。
  • ddt.unpack:传递的是复杂的数据结构时使用,比如使用列表或者元组,添加unpack后,ddt会自动把元组或者列表对应到多个参数上

代码中加入:

@ddt #类上面加上ddt
class UnittestDemo(unittest.TestCase):
#测试用例
@data(放参数)
def test_005(self,data):

 

猜你喜欢

转载自www.cnblogs.com/kelly11/p/12821404.html