''' 要求 : 1、 设计至少五条用例 2、至少用两种方式往测试集合(套件)中添加测试用例 3、执行测试集合(套件)中的测试用例,生成测试报告 '''
# 测试的代码 # 设计用例,对此功能函数进行单元测试 users = [{'user': 'python23', 'password': '123456'}] def register_test(username, password1, password2): # 注册功能 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位之间"} # data = ["test_0001", "12345678", "1234567"] # result = register_test(*data) # print(result) # 上面已经被注册的账号:python23 # 入参三个: 账号 密码1 密码2 # 账号未被注册过,两个密码一样才能注册成功,其他情况都注册失败,对应的结果如下: # 注册成功 预期结果:{"code": 1, "msg": "注册成功"} # 两次密码不一致 预期结果:{"code": 0, "msg": "两次密码不一致"} # 账户已存在 预期结果:{"code": 0, "msg": "该账户已存在"} # 密码不在6-18位之间 预期结果:{"code": 0, "msg": "账号和密码必须在6-18位之间"}
# 编写测试用例 # 导入unittest模块和注册模块函数 import unittest from Day13_2020_03_04.pack01.homework_practice.register import register_test class TestRegister(unittest.TestCase): """账号注册类""" def setUp(self): # 每一条测试用例执行之前都会执行 print("{}开始执行了".format(self)) def tearDown(self): # 每一条测试用例执行之后都会执行 print("{}执行完了".format(self)) @classmethod def setUpClass(cls): # 执行这个测试用例类中的测试用例之前会执行 print("{}开始执行测试用例类执行完了".format(cls)) @classmethod def tearDownClass(cls): # 执行测试用例类全部执行完了,就会执行该方法 print("{}执行测试用例类全部执行完了,就会执行该方法".format(cls)) # 注册成功 def test_register_pass(self): # 入参 data = ["test_0001","12345678","12345678"] # 预期结果 excepted = {"code": 1, "msg": "注册成功"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 对比预期结果和实际结果 self.assertEqual(excepted, result) # 两次输入密码不一致 def test_register_pwd_different(self): # 入参 data = ["test_0001", "12345678", "1234567"] # 预期结果 excepted = {"code": 0, "msg": "两次密码不一致"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 对比预期结果和实际结果 self.assertEqual(excepted,result) # 账户已存在 def test_username_already_exists(self): # 入参 data = ["python23", "12345678", "12345678"] # 预期结果 excepted = {"code": 0, "msg": "该账户已存在"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 对比预期结果和实际结果 self.assertEqual(excepted,result) # 密码小于6位 def test_register_pwd_6(self): data = ["test_0002", "12345","12345"] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result) # 密码大于18位 def test_register_pwd_18(self): data = ["test_0003", "12345909090990789098","12345909090990789098"] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result) # 账号小于6位 def test_register_username_6(self): data = ["test", "12345678", "12345678"] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result) # 账号大于18位 def test_register_username_18(self): data = ["test12345909090990789098", "12345678", "12345678"] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result) # 账号为空 def test_register_username_none(self): data = [None, "12345678", "12345678"] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result) # 密码为空 def test_register_pws_none(self): data = ["test_0004", None, None] # 预期结果 excepted = {"code": 0, "msg": "账号和密码必须在6-18位之间"} # 第一步:调用功能函数,传入参数(实际结果) result = register_test(*data) # 第二步:比对预期结果和实际结果是否一致 self.assertEqual(excepted,result)
""" 添加:测试程序启动文件 第一步:创建一个测试套件(unittest.TestSuite) 第二步:将测试用例加入到测试套件中 第三步:创建一个测试运行程序对象(unittest.TextTestRunner) 第四步:通过运行程序,去执行测试套件中的测试用例 """ from HTMLTestRunnerNew import HTMLTestRunner import unittest from Day13_2020_03_04.pack01.homework_practice import test_register_case # 创建测试套件对象 suite = unittest.TestSuite() # # 第三种方法:将一个模块中的所有测试用例,加载到测试套件 # loader = unittest.TestLoader() # # login_test_case 标黄不影响 # suite.addTest(loader.loadTestsFromModule(test_register_case)) # 第四种方法:通过一个目录,去导入改目录下的所有模块中的测试用例 loader = unittest.TestLoader() # r防止转义,注意测试用例的模块名称,要以test开头 suite.addTest(loader.discover(r"D:\project\class23\Day13_2020_03_04\pack01\homework_practice")) """ stream:测试文件名字 verbosity: title:报告的标题 description:相关的描述 tester:测试人员姓名 """ runner = HTMLTestRunner(stream=open("report.html","wb"), verbosity=2, title="python第二份测试报告", description="注册类测试报告", tester="chen") # 第四步:通过运行程序,去执行测试套件中的测试用例 runner.run(suite)
输出测试HTML报告:
来源:https://www.cnblogs.com/python-test001/p/12420683.html