码迷,mamicode.com
首页 > 其他好文 > 详细

unittest的参数化(parameterized模块)

时间:2020-06-13 11:15:56      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:驱动   存储   desc   ati   test   用户   parameter   eth   函数名   

知识背景:

  在实际工作中,会经常遇到一些场景,比如要测试一个接口,测试多组不同的账户密码数据时,需要写多个case来实现,这种情况只是参数不同,实际都是登录的操作,对于参数情况比较多时,写case非常的不方便。那怎么处理呢?就得把这些参数都写到一个list里面, 然后循环去执行这个case。这样就可以省去写多个case了

  在unittest中有一个模块能实现这种功能,parameterized模块

  了解一下用例设计的三种模式:

    数据驱动:通过将参数存入一个文件,执行代码存入一个文件,实现代码与参数分离,parameterized即可实现简单的数据驱动

    代码驱动:通过编写代码来实现

    关键字驱动:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,每个步骤对应一行文件

    下面对登录接口参数的一个例子

import unittest,parameterized

import BeautifulReport

data = [
    [‘admin‘,‘123456‘,True,‘正常登录‘],#True为程序的预期结果,‘正常登录’表示预期结果描述用来填充报告中“用例描述”字段
    [‘admin‘,‘1122‘,False,‘冻结用户登录‘],
    [‘ssfss‘,‘2222‘,False,‘黑名单用户登录‘]
]
#扩展:可通过excel、txt等文件来存储参数,再读入到一个二维list进行操作

def login(user,password):
    if user ==‘admin‘ and password ==‘123456‘:
        return True
    return False

if __name__ == ‘__main__‘:
    class LoginTest(unittest.TestCase):

        @parameterized.parameterized.expand(data)
        def test_login(self,username,password,expect,desc):
            self._testMethodDoc = desc #用例描述指定内容
            #登录用例                     #使用默认内容“登录用例+系统自带描述”
            result = login(username,password)
            self.assertEqual(expect,result)
    # unittest.TestSuite
    suite_case = unittest.makeSuite(LoginTest)#创建一个测试集合
    bf = BeautifulReport.BeautifulReport(suite_case)#实例化一个beatifulreport对象
    bf.report(filename=‘login接口测试‘,description=‘接口测试报告‘)#可使用log_path参数将报告存放到对应路径

  

 

查看BeatifulReport的报告,已经自动运行3组用例,并按指定内容填加了用例描述

技术图片

 

unittest的参数化(parameterized模块)

标签:驱动   存储   desc   ati   test   用户   parameter   eth   函数名   

原文地址:https://www.cnblogs.com/bugoobird/p/13111602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!