天天看點

day13作業:單元測試架構(注冊案例)

對下面功能函數 設計用例進行單元測試,

要求

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

得到測試報告:

day13作業:單元測試架構(注冊案例)
day13作業:單元測試架構(注冊案例)
day13作業:單元測試架構(注冊案例)
day13作業:單元測試架構(注冊案例)
day13作業:單元測試架構(注冊案例)

繼續閱讀