''' 要求 : 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