python-unittest用例的两种方法测试

unittest一条方法测试不同用例


先写成功能实现的代码


users = [{"user": "Nicholas", "password": "123456"}]

def register(username, password1, password2):

    tuple_1 = (username, password1, password2)
    # 判断是否有参数为空
    """所有参数不能为空"""
    if not all(tuple_1):
        return {"code": 0, "msg": "所有参数不能为空"}
    # 注册功能
    for user in users:  # 遍历出所有的账号,判断账号是否存在
        if username == user['user']:
            """此账号以存在"""
            return {"code": 0, "msg": "此账号以存在"}

    else:
        if password1 != password2:
            """两次密码不一致"""
            return {"code": 0, "msg": "两次密码不一致"}
            # 账户不存在,密码不重复,判断账号长度在6-18之间
        else:
            if 6 <= len(password2) <= 18:
                users.append({"user": username, "password": password2})
                return {"code": 1, "msg": "注册成功"}

创建一个类来调用方法并接收case数据


– 注意:在class中需要重新定义__init__方法,因为在调用class类的时候,传入参数会传到class类中,但是class类中最先是没有__init__方法,所以参数会传入class的父类unittest.TestCase,但是unittest.TestCase类不能接收case数据,所以要重新定义__init__方法,并且重新调用父类的super().init(methodName)方法,使父类方法生效


from student_work import register
import unittest


class test_cases(unittest.TestCase):

    def __init__(self, methodName, case1):
        self.case1 = case1
        super().__init__(methodName)

    def test_register_successfully(self):
        """123456"""
        data = self.case1["data"]
        expected = self.case1["expected"]
        rest = register(*data)
        self.assertEqual(expected, rest)

传入参数

import unittest
from student_work2 import test_cases
from HTMLTestRunnerNew import HTMLTestRunner
"""
case1 = {
    "data": ("Boss_sun", "1234567", "1234567"),
    "expected": {"code": 1, "msg": "注册成功"}
}
"""
cases = [
    {"data": ("Boss_sun", "1234567", "1234567"), "expected": {"code": 1, "msg": "注册成功"}},
    {"data": ("Nicholas", "1234567", "1234567"), "expected": {"code": 0, "msg": "此账号以存在"}},
    {"data": ("Boss_sun1", "1234567", "1234568"), "expected": {"code": 0, "msg": "两次密码不一致"}}

]
# 创建套件
suite = unittest.TestSuite()

# 加载单条用例
"""
uses_case = test_cases("test_register_successfully", case1)
suite.addTest(uses_case)
"""
# 加载多条测试用例
# 多条用例也就是把字典内容汇总到了一个列表中,所有把所有的单条用例取出来也就行了,因此用for循环

for case1 in cases:
    uses_case = test_cases("test_register_successfully", case1)
    suite.addTest(uses_case)

# 测试运行程序
runner = HTMLTestRunner(stream=open("work2.html", "wb"),
                        title="Nicholas home work",
                        description="this is home work for Nicholas"
                        )
runner.run(suite)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值