当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaWeb:实验一JSP运行环境安装及配置
  • 5.Redis 集群 主从复制 哨兵
  • Mybatis 是如何进行分页的?分页插件的原理是什么?
  • java构建工具-maven的复习笔记【适用于复习或者初步了解】
  • WebView快速打开
  • 公司招聘中,多个面试官对候选人评价不一致怎么办?
  • class 3: vue.js 3 计算属性
  • Java中的注解(Annotation)
  • MySQL入门学习-MySQL的连接查询
  • switch语句和while循环
  • 算法练习题07:无重复字符的最长子串
  • 临时性解决斐讯K3 路由器端口转发限制
  • GO Date数据处理
  • CSS-定位【看这一篇就够了】
  • 食堂线上预约点餐系统小程序的设计
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 0基础学习移动端适配
  • codis proxy处理流程
  • Java-详解HashMap
  • MQ框架的比较
  • nginx 配置多 域名 + 多 https
  • node入门
  • Solarized Scheme
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue--为什么data属性必须是一个函数
  • 解决iview多表头动态更改列元素发生的错误
  • 京东美团研发面经
  • 入门到放弃node系列之Hello Word篇
  • 深入浅出Node.js
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 因为阿里,他们成了“杭漂”
  • 《天龙八部3D》Unity技术方案揭秘
  • ionic入门之数据绑定显示-1
  • 大数据全解:定义、价值及挑战
  • ​数据链路层——流量控制可靠传输机制 ​
  • # wps必须要登录激活才能使用吗?
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Java)【深基9.例1】选举学生会
  • (solr系列:一)使用tomcat部署solr服务
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (六)软件测试分工
  • (五)c52学习之旅-静态数码管
  • (转)jQuery 基础
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 使窗口永不获得焦点
  • .NET简谈设计模式之(单件模式)
  • .NET命名规范和开发约定
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .NET业务框架的构建