欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > python模块06 mock-1基础用法

python模块06 mock-1基础用法

2024/10/24 20:11:58 来源:https://blog.csdn.net/qq_41070511/article/details/141405173  浏览:    关键词:python模块06 mock-1基础用法

 0 为什么要使用mock?

测试接口时,需要有对应的接口可以测试才行,否则要等后端开发完,才能进行,

mock模块可以模拟后端接口返回数据,提前根据接口文档准备好后端的静态数据

1mock基础用法

下载:

  • python2:

pip install mock 

  • python3,无须单独安装

from unittest import mock

1) add 函数, mock(return_value),模拟函数返回值

方式一:
from unittest import mock
import unittestdef add(a, b):passclass TestAdd(unittest.TestCase):def test_add(self):add = mock.Mock(return_value = 7)self.assertEqual(7, add(3, 4))

方式二:
class SimpleCaculator():def sum(num1:int, num2:int):return num1 +num2#c测试用例类
class SumTest(unittest.TestCase):def test(self):s = SimpleCaculator()num1 =10num2=30sum_result =mock.Mock(return_value=40)s.sum = sum_resultself.assertEqual(s.sum(), 40)

2) http请求, mock(return_value),模拟接口返回值

self.req.visit=Mock(return_value={"msg":test_info["expected"]})
res = self.req.visit(test_info["method"],test_info['url'],json=eval(test_info["data"]),headers=eval(self.headers))
from unittest import mock
import unittestimport requests
import loggingdef visit(url,params=None,data=None,json=None,method='get',**kwargs):"""封装接口:return:字典 res.json()"""url = urlres = requests.request(method,url ,params = params,data=data,json = json,**kwargs)try:return res.json()except Exception as e:return Noneclass TestDemo(unittest.TestCase):def test_demo(self):visit = mock.Mock(return_value ={"msg":"ok"})self.assertEqual({"msg":"ok"}, visit("url"))

 3)对每个页面进行可行性测试,判断是否返回200状态码

""" demo_02_client.py"""import requests
# 发出get请求
def send_request(url):r = requests.get(url)return r.status_code# 访问百度
def visit_baidu():return send_request("https://www.baidu.com")
import unittest
from unittest import mock
from . import demo_02_clientclass TestClient(unittest.TestCase):def test_success_request(self):success_send = mock.Mock(return_value='200')demo_02_client.send_request = success_sendself.assertEqual(demo_02_client.visit_baidu(), '200')def test_fail_request(self):forbidden_send = mock.Mock(return_value='403')demo_02_client.send_request = forbidden_sendself.assertEqual(demo_02_client.visit_baidu(), '403')if __name__ == '__main__':unittest.main()

4) side_affect,数据库添加数据 mock(side_affect)

side_affect

from mock import Mockdef pay(money):"""实际支付接口"""passdef request_pay(money):"模拟支付接口"if isinstance(money, float):raise ValueErrorreturn money

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com