栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

unittest一条方法测试不同用例

文章目录
  • unittest一条方法测试不同用例
  • 先写成功能实现的代码
  • 创建一个类来调用方法并接收case数据
    • -- 注意:在class中需要重新定义__init__方法,因为在调用class类的时候,传入参数会传到class类中,但是class类中最先是没有__init__方法,所以参数会传入class的父类unittest.TestCase,但是unittest.TestCase类不能接收case数据,所以要重新定义__init__方法,并且重新调用父类的super().__init__(methodName)方法,使父类方法生效
  • 传入参数


先写成功能实现的代码
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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号