**七、综合运用**
1.每个例子写的代码都是一样的?有没有优化的方法?
2.用例数据可不可以独立出来?
3.注意点,每条用例是一条TestCase类的对象,创建对象初始化需要注意__init__方法 。
第一个文件:register.py
# ==========================
# @time:2019/10/28 20:10
# @Author:coco
# @File:register.py
# @software:PyCharm
# ============================
users = [{'user': 'python23', 'password': '1123456'}]
def register(username, password1, passwrod2):
# 注册功能
for user in users: # 遍历出所有的账号,判断账号是否存在
if username == user['user']:
# 账号存在
return {"code": 0, "msg": "该账号已存在"}
else:
if password1 != passwrod2:
# 两次密码不一致
return {"code": 0, "msg": "两次密码不一致"}
else:
# 账号不存在,密码重复,判断账号密码长度是否在6-18位之间
if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:
# 注册账号
users.append({'user': username, 'password': passwrod2})
return {"code": 1, "msg": "注册成功"}
else:
# 账号密码长度不对,注册失败
return {"code": 0, "msg": "账号和密码必须在6-18位之间"}
第二个文件:test_cases.py
# ==========================
# @time:2019/10/29 20:01
# @Author:coco
# @File:test_cases.py
# @software:PyCharm
# ============================
import time
import unittest
from register import register
class RegisterTestCase(unittest.TestCase):
def __init__(self, method_name, case_data):
self.case_data = case_data
super().__init__(method_name)
def test_register(self):
# 预期结果
excepted = self.case_data["excepted"]
# 参数:data
data = self.case_data['data']
# 调用被测试的功能函数,传入参数,获取实际结果
res = register(*data)
# 比对预期结果,和实际结果是否一致
self.assertEqual(excepted, res)
第三个文件:run_suite.py
# ==========================
# @time:2019/10/28 20:42
# @Author:coco
# @File:run_suite.py
# @software:PyCharm
# ============================
import unittest
from HTMLTestRunnerNew import HTMLTestRunner
# from testcase import RegisterTestCase
from test_cases import RegisterTestCase
# 创建测试套件
suite = unittest.TestSuite()
cases = [
{'data': ('python1', '123456', '123456'), "excepted": {"code": 1, "msg": "注册成功"}},
{'data': ('python1', '1234567', '1234567'), "excepted": {"code": 0, "msg": "两次密码不一致"}},
{'data': ('python23', '1234567', '123456'), "excepted": {"code": 0, "msg": "该账号已存在"}},
]
# 加载测试套件
# case_data = {'data': ('python1', '123456', '123456'), "excepted": {"code": 1, "msg": "注册成功"}}
for case_data in cases:
case = RegisterTestCase("test_register", case_data)
suite.addTest(case)
# 生成html文件的测试报告
with open('zy_report.html', 'wb') as fb:
runner = HTMLTestRunner(stream=fb,
title='我的测试报告',
description='这是我的第一份测试报告',
tester='coco')
runner.run(suite)
得到测试报告: