day15_1作业:  将day14的作业优化。加上ddt和html测试报告。

步骤一:项目层级结构,如下:

步骤二:安装 ddt、unittestreport 库

第三步:各代码如下:

register.py 代码如下:

users = [{'user': 'python26', 'password': '123456'}]


def register(username, password1, password2):
    # 判断是否有参数为空
    if not all([username, password1, password2]):
        return {"code": 0, "msg": "所有参数不能为空"}
    # 注册功能
    for user in users:  # 遍历出所有账号,判断账号是否存在
        if username == user['user']:
            # 账号存在
            return {"code": 0, "msg": "该账户已存在"}
        else:
            if password1 != password2:
                # 两次密码不一致
                return {"code": 0, "msg": "两次密码不一致"}
            else:
                # 账号不存在 密码不重复,判断账号密码长度是否在 6-18位之间
                if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:
                    # 注册账号
                    users.append({'user': username, 'password': password2})
                    return {"code": 1, "msg": "注册成功"}
                else:
                    # 账号密码长度不对,注册失败
                    return {"code": 0, "msg": "账号和密码必须在6-18位之间"}

#
if __name__ == "__main__":
    res = register('python28', '123456', '123456')
    print(res)


'''
函数入参:参数1: 账号, 参数2:密码1 , 参数3: 密码2

参数全部传字符串类型,不考虑其他类型

函数内部:
1. 判断是否为空
2. 判断账号密码是否在6-18之间
3. 判断账号是否被注册过
4. 两次密码是否一致
5. 上面添加都校验通过才能注册成功,其他情况都注册失败
各种情况的返回结果如下:  
   注册成功               返回结果:{"code": 1, "msg": "注册成功"}
   有参数为空,            返回结果 {"code": 0, "msg": "所有参数不能为空"}   
   两次密码不一致          返回结果:{"code": 0, "msg": "两次密码不一致"}
   账户已存在             返回结果:{"code": 0, "msg": "该账户已存在"}
   密码不在6-18位之间      返回结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}              
   账号不在6-18位之间      返回结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
'''


"""
test_register.py 代码如下:

import unittest
from unittestreport import ddt, list_data
import register


@ddt
class TestClass(unittest.TestCase):

    # 以下 data 在第2个位置或第3个位置都适配 unittestreport 中的 list_data;
    # cases = [{'title': '验证 用户名已经被注册', 'data': ['python26', '123456', '123456'], 'expected': '该账户已存在'},
    #          {'title': '验证 正确的用户名、密码', 'data': ['test123', '1234567', '1234567'], 'expected': '注册成功'},
    #          ]
    cases = [{'title': '验证 用户名已经被注册', 'expected': '该账户已存在', 'data': ['python26', '123456', '123456']},
             {'title': '验证 正确的用户名、密码', 'expected': '注册成功', 'data': ['test123', '1234567', '1234567']},
             {'title': '验证 用户名、密码为空', 'expected': '所有参数不能为空', 'data': ['', '', '']},
             {'title': '验证 用户名为空', 'expected': '所有参数不能为空', 'data': ['', '1234567', '1234567']},
             {'title': '验证 用户名小于6', 'expected': '账号和密码必须在6-18位之间', 'data': ['test', '1234567', '1234567']},
             {'title': '验证 密码小于6', 'expected': '账号和密码必须在6-18位之间', 'data': ['test456', '12345', '12345']},
             {'title': '验证 用户名大于18', 'expected': '账号和密码必须在6-18位之间', 'data': ['test1234567890abcde', '123456', '123456']},
             {'title': '验证 密码大于18', 'expected': '账号和密码必须在6-18位之间', 'data': ['test456', 'test1234567890abcde', 'test1234567890abcde']},
             {'title': '验证 2个密码是否一致', 'expected': '两次密码不一致', 'data': ['test456', '123456', '654321']}
             ]

    @list_data(cases)
    def test_register(self, data):
        actual_results = register.register(*data['data'])['msg']
        self.assertEqual(data['expected'], actual_results)


run_test.py 代码如下:

# 用第三方html报告: https://gitee.com/lemon-test-official/unittestreport

import os
import unittestreport
import unittest
# 用 os.path 获取文件所在目录
file_path = os.path.realpath('__file__')
file_dir = os.path.dirname(file_path)

# 1、加载测试用例到套件中
suite = unittest.defaultTestLoader.discover(file_dir)

# 2、创建一个用例运行程序
runner = unittestreport.TestRunner(suite,
                                   tester='测试人员—nicole',
                                   filename="register函数测试报告_样式2",
                                   report_dir="./reports",
                                   title='register函数测试报告',
                                   desc='register函数单元测试报告',
                                   templates=2)

# 3、运行测试用例
runner.run()


执行结果如下:

1.生成测试报告,测试报告中有用例描述;

 

补充知识:

导ddt的包方式不一样,装饰器那里的写法有区别 ;



posted @ 2022-01-26 15:40  nicole_cute  阅读(44)  评论(0)    收藏  举报