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)
上一篇:
5款热门的远程控制软件,让你事半功倍
下一篇:
什么是测试界天花板,我今天算是见到了