接口自动化-unittest-mock使用

mock
什么是mock,mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。在工作中如果在接口没有开发完成时,也可以进行来模拟接口的返回数据从而验证接口的正确性。

示例:
1、新增登录和获取个人信息两个接口,分别由A(login)和B(get_user_info)开发。
2、A登录接口尚未开发完成,B获取个人信息接口已经开发完成。
3、已知登录接口返回3种状态:登录成功,登录失败,登录异常。

一、新增API_Case.py类,新增两个接口login和get_user_info

"""
@Project: InterfaceDemo   
@Description: API接口
@Time:2022/4/24 10:16       
@Author:MING                
"""

# 示例:
# 1、新增登录和获取个人信息两个接口,分别由A(login)和B(get_user_info)开发
# 2、A登录接口尚未开发完成,B获取个人信息接口已经开发完成。
# 3、已知登录接口返回3种状态:登录成功,登录失败,登录异常。

def login():
    # 登录接口,尚未开发完成
    # 登录成功返回:{"result": "success", "message": "登录成功"}
    # 登录失败返回:{"result": "fail", "message":"账号或密码错误"}
    # 登录异常返回:{"code": "404", "message": "找不到页面"}
    # message返回失败原因
    pass

def get_user_info():
    # 根据登录的结果success or fail,判断跳转到对应页面
    result = login()
    print(result)
    try:
        if result['result'] == "success":
            return "登录成功"
        elif result['result'] == "fail":
            return "登录失败"
        else:
            return "未知失败"
    except:
        return "服务端异常"

二、新增Test_Login.py类,新增四个方法:test_login_success,test_login_fail,test_login_fail2,test_login_error

"""
@Project: InterfaceDemo   
@Description: 单元测试用例
@Time:2022/4/24 10:23       
@Author:MING                
"""

from unittest import mock
import unittest
import API_Case

class Test_Login(unittest.TestCase):

    def test_login_success(self):
        # 测试登录成功场景
        # mock一个支付成功的数据
        API_Case.login = mock.Mock(return_value={"result": "success", "message": "登录成功"})
        # 根据支付结果测试页面跳转
        statues = API_Case.get_user_info()
        self.assertEqual(statues,'登录成功')

    def test_login_fail(self):
        # 测试登录失败场景
        # mock一个登录失败的数据
        API_Case.login = mock.Mock(return_value={"result": "fail", "message": "账号或密码错误"})
        # 根据登录结果测试页面跳转
        statues = API_Case.get_user_info()
        self.assertEqual(statues, "登录失败")

    def test_login_fail2(self):
        # 测试登录失败场景
        # mock一个登录失败的数据
        API_Case.login = mock.Mock(return_value={"result": "", "message": "账号或者密码为空"})
        # 根据登录结果测试页面跳转
        statues = API_Case.get_user_info()
        self.assertEqual(statues, "未知失败")

    def test_login_error(self):
        # 测试登录异常场景
        # mock一个登录异常的数据
        API_Case.login = mock.Mock(return_value={"code": "404", "message": "找不到页面"})
        # 根据登录结果测试页面跳转
        statues = API_Case.get_user_info()
        self.assertEqual(statues, "服务端异常")

if __name__ == "__main__":
    unittest.main()

三、执行如下图:
接口自动化-unittest-mock使用_第1张图片

你可能感兴趣的:(接口自动化,python)