Python之unittest参数化


unittest如何做参数化呢?

我们在写case 的时候如果就是参数不同,我们只需要把参数都写到一个list里面, 然后循环去执行这个case即可。

unittest中有一个模块parameterized,可以帮我们循环,不需要自己写循环,直接pip install parameterized安装即可。

例如:一个登陆的case

import parameterized
import unittest,BeautifulReport

data = [
    ['admin','123456',True], #第三列表示预期结果
    ['admin','1122',False],
    ['sdfsdf','1111',False]
]

data1 = [
    ['admin','123456',True,'正常登陆'], #第四列表示描述
    ['admin','1122',False,'冻结用户登陆'],
    ['sdfsdf','1111',False,'黑名单用户登陆']
]

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

class LoginTest(unittest.TestCase):
    @parameterized.parameterized.expand(data)
    def test_login(self,user,password,expect):
        '''登陆''' # 加上'''在测试报告中会显示用例描述
        result=login(user,password)
        self.assertEqual(expect,result)

    @parameterized.parameterized.expand(data1)
    def test_login1(self,user,password,expect,desc):
        self._testMethodDoc=desc #自己指定用例描述的展示样子
        result=login(user,password)
        self.assertEqual(expect,result)

bf=BeautifulReport.BeautifulReport(unittest.makeSuite(LoginTest))
bf.report(filename='11-17测试报告',description='接口测试报告')

结果:展示了2种用例描述的样式,其中123条是指定的用例描述,456条是默认的样式。

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM