2020-06-12登录测试用例单元测试报告

1. register.py 函数文件

# 测试需求2:(作业)
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('python14','123456', '123456')
    print(res)


'''
用例如下:
1.账号输入为空
预期结果:{"code": 0, "msg": "所有参数不能为空"}
实际结果:

2.密码输入为空
预期结果:{"code": 0, "msg": "所有参数不能为空"}
实际结果:

3.注册成功
预期结果:{"code": 1, "msg": "注册成功"}
实际结果:

4.账号已存在
预期结果:{"code": 0, "msg": "该账户已存在"}
实际结果:

5.两次密码不一致
预期结果:{"code": 0, "msg": "两次密码不一致"}
实际结果:

6.账号长度小于6位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

7.账号长度大于18位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

8.密码长度小于6位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

9.密码长度大于18位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:
'''

2.test_register.py 测试用例文件

'''
==================================
cooding:utf-8
@Time    :2020/6/13 14:40
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :test_register.py
@Software:PyCharm
===================================
'''

print('''
设计了9条测试用例如下:
用例如下:
1.账号输入为空
预期结果:{"code": 0, "msg": "所有参数不能为空"}
实际结果:

2.密码输入为空
预期结果:{"code": 0, "msg": "所有参数不能为空"}
实际结果:

3.注册成功
预期结果:{"code": 1, "msg": "注册成功"}
实际结果:

4.账号已存在
预期结果:{"code": 0, "msg": "该账户已存在"}
实际结果:

5.两次密码不一致
预期结果:{"code": 0, "msg": "两次密码不一致"}
实际结果:

6.账号长度小于6位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

7.账号长度大于18位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

8.密码长度小于6位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:

9.密码长度大于18位,注册失败
预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
实际结果:
''')

import unittest    # 导入unittest模块

from py30.class_work_two.register import register    # 从(class_work_two)包.(register)模块 导入(register)函数

import ddt    # 引入ddt模块

# 用例
use_case = [
    # 用例1:账号输入为空
    {'username':'','password1':'123456','password2':'123456','expected':{"code": 0, "msg": "所有参数不能为空"},'title':'账号输入为空'},
    # 用例2:密码输入为空
    {'username':'python14','password1':'','password2':'','expected':{"code": 0, "msg": "所有参数不能为空"},'title':'密码输入为空'},
    # 用例3:注册成功
    {'username':'python14','password1':'123456','password2':'123456','expected':{"code": 1, "msg": "注册成功"},'title':'注册成功'},
    # 用例4:账号已存在
    {'username':'python26','password1':'123456','password2':'123456','expected':{"code": 0, "msg": "该账户已存在"},'title':'账号已存在'},
    # 用例5:两次密码不一致
    {'username':'python15','password1':'123456','password2':'12345678','expected':{"code": 0, "msg": "两次密码不一致"},'title':'两次密码不一致'},
    # 用例6:账号长度小于6位,注册失败
    {'username':'pytho','password1':'123456','password2':'123456','expected':{"code": 0, "msg": "账号和密码必须在6-18位之间"},'title':'账号长度小于6位,注册失败'},
    # 用例7:账号长度大于18位,注册失败
    {'username':'python30qilehaokaix','password1':'123456','password2':'123456','expected':{"code": 0, "msg": "账号和密码必须在6-18位之间"},'title':'账号长度大于18位,注册失败'},
    # 用例8:密码长度小于6位,注册失败
    {'username':'python16','password1':'12345','password2':'12345','expected':{"code": 0, "msg": "账号和密码必须在6-18位之间"},'title':'密码长度小于6位,注册失败'},
    # 用例9:密码长度大于18位,注册失败
    {'username':'python17','password1':'8888888888888888888','password2':'8888888888888888888','expected':{"code": 0, "msg": "账号和密码必须在6-18位之间"},'title':'密码长度大于18位,注册失败'},
]

@ddt.ddt
class Testlogregister(unittest.TestCase):    # 定义测试类,继承unittest.TestCase

    @classmethod       # 装饰器,声明为类方法
    def setUpClass(cls) -> None:           # 这是类方法,意思是继承了类,这里重写了,只会执行一次
        print('=========== 测试用例类{}开始执行了'.format(cls))

    @classmethod      # 装饰器,声明为类方法
    def tearDownClass(cls) -> None:       # 这是类方法,意思是继承了类,这里重写了,只会执行一次
        print('=========== 测试用例类{}执行结束了'.format(cls))

    def setUp(self) -> None:           # 这是前置条件,定义了每个测试用例都会执行
        print('************ 用例{}开始执行了'.format(self))

    def  tearDown(self) -> None:       # 这是后置条件,定义了每个测试用例都会执行
        print('************ 用例{}执行结束了'.format(self))

    @ddt.data(*use_case)    # 拆包传参
    def test_logster(self,case):    # 定一个变量接收
        rop = register(case['username'],case['password1'],case['password2'])   # 实际结果
        # 断言:判断预期结果与实际结果是否一致
        try:     # 异常处理
            self.assertEqual(rop,case['expected'])   # 断言:判断预期结果与实际结果是否一致
        except AssertionError as e:    # 有异常进入这里
            print('报错是{0}'.format(e))     # 打印提示异常信息
            raise e      # 把异常抛出

3.main.py 用例收集与生成报告文件

'''
==================================
cooding:utf-8
@Time    :2020/6/13 14:40
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :main.py
@Software:PyCharm
===================================
'''

# 用例收集
import unittest   # 导入unittest模块
# 导入(from 包名.模块名 import 函数/变量)
from py30.class_work_two.test_register import Testlogregister
# 实例化TestLoader
s = unittest.TestLoader().discover('F:\PyChaer-workspare\py30')   # 搜索目录下的用例
print(s)   # 打印出用例

# 用例执行和生成测试报告
# 导入这个包
from BeautifulReport import BeautifulReport
cuto = BeautifulReport(s)
# 给到名称和创建html文件
cuto.report('2020-0612作业测试报告','beau.report.html')

# 第二种:HtmlTestRunner模块
# 导入这个包
# from HTMLTestRunnerNew import HTMLTestRunner
# # 创建一个html文件,以写入的模式打开,支持中文
# with open('cuto.report.html','wb') as fs:
#     # 运行测试用例,将结果写入html当中
#     runner = HTMLTestRunner(fs,title='2020-0612作业测试报告',tester='henry')   # 实例化之后运行这个对象.可以指定给参数
#     runner.run(s)    # 调用run方法

4.html 报告

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值