對下面功能函數 設計用例進行單元測試,
要求
1、 設計至少五條用例
2、至少用兩種方式往測試集合(套件)中添加測試用例
3、執行測試集合(套件)中的測試用例,生成測試報告
# 設計用例,對此功能函數進行單元測試
users = [{'user': 'python23', 'password': '123456'}]
def register(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位之間"}
# 上面已經被注冊的賬号:python23
# 入參三個: 賬号 密碼1 密碼2
# 賬号未被注冊過,兩個密碼一樣才能注冊成功,其他情況都注冊失敗,對應的結果如下:
# 注冊成功 預期結果:{"code": 1, "msg": "注冊成功"}
# 兩次密碼不一緻 預期結果:{"code": 0, "msg": "兩次密碼不一緻"}
# 賬戶已存在 預期結果:{"code": 0, "msg": "該賬戶已存在"}
# 密碼不在6-18位之間 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
第一個檔案: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位之間"}
第二個檔案:testcases.py
# ==========================
# @time:2019/10/28 20:27
# @Author:coco
# @File:testcases.py
# @software:PyCharm
# ============================
"""
注冊成功 預期結果:{"code": 1, "msg": "注冊成功"}
兩次密碼不一緻 預期結果:{"code": 0, "msg": "兩次密碼不一緻"}
賬号已存在 預期結果:{"code": 0, "msg": "該賬号已存在"}
密碼長度小于6 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
密碼長度大于18 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
賬号長度小于6 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
賬号長度大于18 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
賬号為空 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
密碼為空 預期結果:{"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
"""
import time
import unittest
from register import register
class RegisterTestCase(unittest.TestCase):
def sestUp(self):
print('用例{}開始執行了'.format(self))
def tearDown(self):
print('用例{}執行結束了'.format(self))
@classmethod
def setUpClass(cls) :
import time
time.sleep(2)
print('測試用例類{}開始執行了'.format(cls))
@classmethod
def tearDownClass(cls):
time.sleep(1)
print('測試用例類{}執行結束了'.format(cls))
def test_register(self):
"""正常注冊"""
# 預期結果
excepted={"code": 1, "msg": "注冊成功"}
# 參數:data
data=('python1','123456','123456')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res=register(*data)
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted,res)
def test_password_dis(self):
"""兩次密碼不一緻"""
# 預期結果
excepted = {"code": 0, "msg": "兩次密碼不一緻"}
# 參數:data
data = ('python1', '123456', '1234567')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
def test_user_register(self):
"""賬号已經被注冊"""
# 預期結果
excepted = {"code": 0, "msg": "該賬号已存在"}
# 參數:data
data = ('python23', '1234567', '1234567')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
def test_password_lt6(self):
"""密碼小于6"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = ('python3', '12345', '12345')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
def test_password_gt18(self):
"""密碼大于18"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = ('python3', '8888888888888888888', '8888888888888888888')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
try:
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
except AssertionError as e:
print('該用例測試未通過')
raise e
else:
print('該用命測試通過')
def test_user_lt6(self):
"""賬号長度小于6"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = ('py01', '1234567', '1234567')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
def test_user_gt18(self):
"""賬号長度大于18"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = ('pythonpytheon2342455322q2223', '1234567', '1234567')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
try:
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
except AssertionError as e:
print('該用例測試未通過')
raise e
else:
print('該用例測試通過')
def test_user_is_none(self):
"""賬号為空"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = (None, '1234567', '1234567')
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
try:
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
except AssertionError as e:
print('該用例測試未通過')
raise e
else:
print('該用例測試通過')
def test_password_is_none(self):
"""密碼為空"""
# 預期結果
excepted = {"code": 0, "msg": "賬号和密碼必須在6-18位之間"}
# 參數:data
data = ('python56', None, None)
# 調用被測試的功能函數,傳入參數,擷取實際結果
res = register(*data)
try:
# 比對預期結果,和實際結果是否一緻
self.assertEqual(excepted, res)
except AssertionError as e:
print('該用例測試未通過')
raise e
else:
print('該用例測試通過')
第四個檔案:HTMLTestRunnerNew.py
得到測試報告: