新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python-Mock接口测试

发布时间:2026/10/1 10:22:31来源:尧图网络
Python-Mock接口测试
前言[]那什么东西又叫做mock?为什么说要进行mock操作呢?1. 当我们在测试一个接口, 或者在测试一个功能模块的时候, 要是这个接口依赖了其他接口, 或者这个功能模块依赖了其他模块, 要是这些被依赖的接口还没开发完, 要是这些被依赖的功能模块还没开发完, 那么我们就可以使用mock工具, 来模拟那些被依赖接口, 这样就可以完成目标接口的测试工作了。[]3.模拟涉及复杂业务的接口, 是指在现实工作情境下, 当开发人员需要对某个接口进行功能测试的时候, 如果这个待测的接口依赖于一个业务逻辑非常繁杂的接口, 那么测试人员是可以运用mock技术来对这个复杂的业务接口实施模拟操作的, 实际上这种处理方式所依据的核心机制与消除接口之间依赖关系的方法是完全一致的。4.前后端联调的环节中, 假设用户是前端页面开发角色, 当前面临的状况是需要开展某一功能的开发工作, 而该功能的具体表现逻辑是根据后台系统所返回的状态信息来展示差异化的页面内容, 鉴于这一技术实现路径要求开发者主动向后台调用相应的接口程序, 可是现实情况里后台接口的代码开发任务尚未最终完成并交付使用, 因此开发者可以考虑采取借助于模拟工具的技术手段来处理这一问题, 通过这种手段能够虚构出后台接口在理想状态下应当返回的目标数据包, 从而满足前端调试阶段对预期数据的获取需求。[]1.可以使用抓包工具, 比如说。2.你可以使用web框架来实现模拟操作, 例如选择Flask这款web开发框架, 因为它的特点主要是结构比较简单, 而且对初学者来说很容易入门。首先, 我们是要利用flask来完成编写一个接口的任务。然后呢, 这个接口要求我们要做到最简单的那种情况。[]搭建模拟服务端代码。import randomimport timefrom flask import Flask,request,json#实例化一个web服务对象appFlask(__name__)#创建一个方法来处理请求#定义一个路由--访问服务的根目录就可以得到结果app.route(/)def hello():return hello flask#构造一个接受post请求的响应app.route(/post,methods[POST])def test_post():#处理接口发送过来的两个参数将两个参数合并成一个字符串返回d1request.form[d1]d2request.form[d2]return d1d2if __name__ __main__:#运行服务并确定服务运行的IP和端口app.run(127.0.0.1,9090)先把那个用来模拟服务端的东西给跑起来。客户端代码body{d1:hi,d2:falsk12312312}resprequests.post(http://127.0.0.1:9090/post,databody)print(resp.text)结果如下关于第二部分的, 我们来看一看, 具体就是那个mock接口的测试实战案例的内容情况。参数类型是否必填最大长度描述示例值64商户订单号这一项内容, 它的长度限制在六十四个字符以内, 这中间的组成部分是可以包含字母的也可以包含数字的还可以包含下划线这些元素的, 但是需要保证的一点就是这一串字符必须要在商户自己的内部系统中是唯一不重复的。64支付授权码指的是以25到30开头的这种数字序列, 其长度一般处于16位到24位之间至于字符串的实际长度是多少, 应该以开发者从系统里获取到的那个付款码的长度为标准。356把那个订单的标题写出来。16G28买家的支付宝如果是用 id 来标识的话, 倘若这种情况是处于空白没有数值的样子, 那么系统就会转而从当前传递过来的代码值相关的消息资料里面去提取并获取买家的身份 ID。2578628如果发现这一项值是空白的, 那我们就直接使用商户签约账号所对应的支付宝用户ID作为默认值。25135Price11订单里的总金额, 它的单位是元, 得精确到小数点后面的两位数, 具体的取值范围。0.01,这种情况会同时传入【可打折金额】, 同时也会传入【不可打折金。额】, 该参数就可以不用传进去了如果同时又传进去了。这里的【订单总金额】, 还有那个【可打折金额】, 以及那个【不可打折金额】, 它们三个之间, 必须满足这样的条件, 也就是: 【订单总金额】等于【可打折金额】加【不可打折金额】。88.88响应参数在请求头里面, 有一个键, 这个键的名字是 -Type, 它所对应的那个值呢, 是那个 /json。请求示例:,:,是:25786。:25135,:,:88.88,这是一个成功的返回示例。当前返回的错误代码为“40004”。msg: ,:ACQ.,“”表示的意思是, 这笔交易钱已经付过了。:,:失败返回示例在数据中发现了一个错误对象, 该错误对象的键是一个空字符串, 对应的值提示密码存在错误问题。与此同时, 外层数据的空字符串键所指向的结果状态为false。进行mock服务端的搭建工作。import randomimport timefrom flask import Flask,request,json#实例化一个web服务对象appFlask(__name__)#创建一个方法来处理请求#定义一个路由--访问服务的根目录就可以得到结果#构造一个接受post请求的响应#处理极简交易接口app.route(/trade/purchase,methods[POST])def purchase():#拿到客户端返回的数据resjson.loads(request.get_data())out_trade_nores[out_trade_no]auth_coderes[auth_code]data{code: 40004,msg: Business Failed,sub_code: ACQ.TRADE_HAS_SUCCESS,sub_msg: 交易已被支付,trade_no: 2013112011001004330000121536,out_trade_no: 6823789339978248}#把out_trade_no改成客户端发送过来的数据data[out_trade_no]out_trade_nodata[trade_no]time.strftime(%Y%m%d%H%M%S)str(random.random()).replace(0.,)#验证授权码if auth_code !28763443825664394:return {coode:50000,msg:请求码验证失败}return dataif __name__ __main__:#运行服务并确定服务运行的IP和端口app.run(127.0.0.1,9090)客户端代码#利用request发送post请求给服务端import requestsdata{out_trade_no:20150320010101001,auth_code:2876344382566439,buyer_id:2088202954065786,seller_id:2088102146225135,subject:Iphone6,total_amount:88.88,}resprequests.post(http://127.0.0.1:9090/trade/purchase,jsondata)print(resp.json())结果被返回出来了, 如下所示。经过完成Mock接口测试这一环节, 大家是不是已经掌握了相关的知识内容呢?
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

FRI 与 KG-TOWER 二次开发教程(20):收官——FRI/KG-TOWER 二次开发水力学核算工具包(完整项目) 2026/10/1 11:06:33

FRI 与 KG-TOWER 二次开发教程(20):收官——FRI/KG-TOWER 二次开发水力学核算工具包(完整项目)

FRI 与 KG-TOWER 二次开发教程(20):收官——FRI/KG-TOWER 二次开发水力学核算工具包(完整项目)版本与事实声明 项目名 fri_kt,版本 0.1.0;环境:Python 3.8,numpy 2.2.6、…

阅读更多 →
AI+CAD落地实战:从DXF/DWG解析到FreeCAD批量改图的工程避坑指南 2026/10/1 11:06:33

AI+CAD落地实战:从DXF/DWG解析到FreeCAD批量改图的工程避坑指南

1. 为什么“AI CAD”看起来很美,落地却处处碰壁过去两年,我参与过三个跟“AI 辅助 CAD”相关的内部项目,也帮朋友的公司做过几次技术选型评估。一个非常明显的感受是:Demo 满天飞,工程走不通。你在网上能看到大量“上…

阅读更多 →
B3616队列模板题全解:从FIFO到单调队列与消息队列 2026/10/1 11:06:32

B3616队列模板题全解:从FIFO到单调队列与消息队列

刷过洛谷“模板”系列的人,大概率都跟这道 B3616 打过照面。它挂着“【模板】队列”的名头,看起来就是一道入门的不能再入门的裸题,但很多新手恰恰就是在这里翻了车——不是不会队列,而是不会“正确地模拟队列”。这道题表面上在考…

阅读更多 →
JDK 8u131安装与生产环境适配实战指南 2026/10/1 11:06:26

JDK 8u131安装与生产环境适配实战指南

1. 为什么现在还要讲 JDK 8u131?这不是“古董”吗?JDK 8u131 这个版本,乍一看确实像考古现场——它发布于2017年4月,距今已超七年。但如果你正在维护一套运行在金融核心系统、电力调度平台、大型国企ERP或老版本Spring Boot 1.x微…

阅读更多 →
GAMMA 2020在Ubuntu 20.04安装全指南:从解压到License配置 2026/10/1 11:06:26

GAMMA 2020在Ubuntu 20.04安装全指南:从解压到License配置

用了大半天时间,总算在实验室那台Ubuntu 20.04工作站的坑坑洼洼里把GAMMA 2020版装利索了。这期间朋友问得最多的就是:GAMMA到底怎么装?和网上搜出来的gamma校正是一回事吗?这里先把最关键的结论放在开头:如果你做的是…

阅读更多 →
Redis三件套实战:redis-cli、hiredis与redis-benchmark完全指南 2026/10/1 11:06:12

Redis三件套实战:redis-cli、hiredis与redis-benchmark完全指南

1. 开篇:Redis三件套,到底指的是哪三样如果你跟Redis打交道超过一周,迟早会在各种文档、招聘要求、生产事故复盘里撞见这三个名字:redis-cli、hiredis 和 redis-benchmark。它们偶尔被混为一谈,但实际上分工完全不同。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉