unittest进阶 : ddt的使用

ddt: Data Driver Test (数据库的使用)

把测试数据和用例代码进行分离,通过外部数据去生成测试用例, 方便后期的维护,以及测试数据的管理。

简单来说就是 ,一个脚本,输入多组数据来进行测试 。 下面使用代码来演示

  • 下载DDT库:pip install ddt

1.抄一下上一篇博客中的登陆方法,用来测试

"""
登录校验
:param username:用户名
:param password: 密码
:return dict type

"""


# 登陆校验
def login_check(username=None, password=None):
    if username is None or password is None or username == "" or password == "":
        return {'code': '400', 'msg': '用户名或密码不能为空'}
    else:
        if username == "admin" and password == "123456":
            return {'code': '200', 'msg': '登录成功'}
        else:
            return {'code': '400', 'msg': '用户名或密码错误'}

2.写一个unittest测试类 。测试类前面使用@ddt.ddt; 测试数据前使用 @ddt.data

import unittest
import ddt
import login


@ddt.ddt
class TestDdtLogin(unittest.TestCase):

# 给4条测试数据
    Testdata = [
        {"username": "admin", "password": "123456", "excepted": {'code': '200', 'msg': '登录成功'}},
        {"username": None, "password": "1234567", "excepted": {'code': '400', 'msg': '用户名或密码不能为空'}},
        {"username": "admin", "password": None, "excepted": {'code': '400', 'msg': '用户名或密码不能为空'}},
        {"username": "admin", "password": "123456789", "excepted": {'code': '404', 'msg': '用户名或密码错误'}},
    ]


    @ddt.data(*Testdata)
    def test_login_DDT(self, Testdata):
        res = login.login_check(Testdata['username'], Testdata['password'])
        self.assertEqual(res, Testdata['excepted'])


if __name__ == '__main__':
    unittest.main()

执行结果:

 


版权声明:本文为qq_38047148原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。