Mock接口测试

这篇具有很好参考价值的文章主要介绍了Mock接口测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是mock?

  • 测试桩,模拟被测对象的返回,用于测试

  • 通常意义的mock指的就是mock server, 模拟服务端返回的接口数据,用于前端开发,第三方接口联调

为什么要mock?

1. 解决依赖问题:当我们测试一个接口或者功能模块的时候,如果这个接口或者功能模块依赖其他接口或其他模块,那么如果所依赖的接口或功能模块未开发完毕,那么我们就可以使用mock模拟被依赖接口,完成目标接口的测试。

2.单元测试:如果某个功能未开发完成,我们又要进行测试用例的代码编写,我们也可以先模拟这个功能进行测试  

3.模拟复杂业务的接口:实际工作中如果我们在测试一个接口功能时,如果这个接口依赖一个非常复杂的接口业务,那么我们完全可以使用mock来模拟这个复杂的业务接口,其实  这个和解决接口依赖是一样的原理。 

4.前后端联调:如果你是一个前端页面开发,现在需要开发一个功能:根据后台返回的状态展示不同的页面,那么你就需要调用后台的接口,但是后台接口还未开发完成,可以借助mock来模拟后台这个接口返回你想要的数据。

如何mock?

1.利用抓包工具比如fiddler

2.可以利用web框架模拟,Django Flask ---python web开发框架,Flask的特点就是,结构简单,容易入门

一:利用flask编写一个最简单的接口

安装Flask, 在dos窗口输入:pip install flask

Mock接口测试,软件测试,jmeter

搭建mock服务端代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import random

import time

from flask import Flask,request,json

#实例化一个web服务对象

app=Flask(__name__)

#创建一个方法来处理请求

#定义一个路由--访问服务的根目录就可以得到结果

@app.route('/')

def hello():

    return '<h1>hello flask</h1>'

#构造一个接受post请求的响应

@app.route('/post',methods=['POST'])

def test_post():

    #处理接口发送过来的两个参数,将两个参数合并成一个字符串返回

    d1=request.form['d1']

    d2=request.form['d2']

    return d1+d2

if __name__ == '__main__':

    #运行服务,并确定服务运行的IP和端口

    app.run('127.0.0.1','9090')

启动mock服务端:

Mock接口测试,软件测试,jmeter

客户端代码:

import requests

1

2

3

4

5

6

body={

     'd1':'hi',

    'd2':'falsk12312312'

}

resp=requests.post('http://127.0.0.1:9090/post',data=body)

print(resp.text)

结果如下:

Mock接口测试,软件测试,jmeter

二:mock接口测试实战案例

接口文档如下:

极简交易支付接口

接口路径: /trade/purchase

请求方式: POST

请求参数:

参数

类型

是否必填

最大长度

描述

示例值

out_trade_no

String

64

商户订单号,64个符以内、可包含字母、数字、下划线;需保证在商户端不重复

20150320010101001

auth_code

String

64

支付授权码,25~30开头的长度为16~24位的数字,实际字符串长度以开发者获取的付款码长度为准

28763443825664394

subject

String

356

订单标题

Iphone6 16G

buyer_id

String

28

买家的支付宝用id,如果为空,会从传入的码值信息中获取买家 ID

2088202954065786

seller_id

String

28

如果该值为空,则默认为商户签约账号对应的支付宝用户ID

2088102146225135

total_amount

Price

11

订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]

如果同时传入【可打折金额】和【不可打折金

额】,该参数可以不用传入;如果同时传入了

【可打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】

88.88 

响应参数:

Mock接口测试,软件测试,jmeter

请求头:键:Content-Type 值:application/json 

请求示例:

{

  'out_trade_no':'20150320010101001',

  'auth_code':'28763443825664394',

  'buyer_id':'2088202954065786',

  'seller_id':'2088102146225135',

  'subject':'Iphone6',

  'total_amount':'88.88',

} 

成功返回示例: 

{

   'code':'40004',

  'msg':'Business Failed',

  'sub_code':'ACQ.TRADE_HAS_SUCCESS',

  'sub_msg':'交易已被支付',

  'trade_no':'2013112011001004330000121536',

  'out_trade_no':'6823789339978248'

}

失败返回示例:

{'error': {'password': '密码错误'}, 'success': 'false'}

搭建mock服务端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

import random

import time

from flask import Flask,request,json

#实例化一个web服务对象

app=Flask(__name__)

#创建一个方法来处理请求

#定义一个路由--访问服务的根目录就可以得到结果

#构造一个接受post请求的响应

#处理极简交易接口

@app.route('/trade/purchase',methods=['POST'])

def purchase():

    #拿到客户端返回的数据

    res=json.loads(request.get_data())

    out_trade_no=res['out_trade_no']

    auth_code=res['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_no

    data['trade_no']=time.strftime('%Y%m%d%H%M%S')+str(random.random()).replace('0.','')

    #验证授权码

    if auth_code !='28763443825664394':

        return {'coode':'50000','msg':'请求码验证失败'}

    return data

if __name__ == '__main__':

    #运行服务,并确定服务运行的IP和端口

    app.run('127.0.0.1','9090')

客户端代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

#利用request发送post请求给服务端

import requests

data={

    'out_trade_no':'20150320010101001',

    'auth_code':'2876344382566439',

    'buyer_id':'2088202954065786',

    'seller_id':'2088102146225135',

    'subject':'Iphone6',

    'total_amount':'88.88',

}

resp=requests.post('http://127.0.0.1:9090/trade/purchase',json=data)

print(resp.json())

返回结果如下:

Mock接口测试,软件测试,jmeter

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)文章来源地址https://www.toymoban.com/news/detail-696702.html

到了这里,关于Mock接口测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件测试】技术精选:Jmeter常见的几种报错

    这个错的含义是 没有连接到服务器地址,因此很可能是 内部网络中断导致。 这个和本地的线程数无关 可能原因是网络抖动不稳定导致 强制停止线程,连接中断产生的错误,正常压测我们等测试结束就好,不用强制停止 这个错误的导致是由于请求接口 设置的请求超时与 请

    2024年02月16日
    浏览(62)
  • Jmeter进行压力测试不为人知的秘密_jmter压力测试,软件测试面试项目

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月22日
    浏览(47)
  • 软件测试 | websocket接口测试

    简介 WebSocket 是一种在单个 TCP 连接上进行全双工通信(Full Duplex 是通讯传输的一个术语。通信允许数 据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进 行信号的双向传输( A→B 且 B→A )。指 A→B 的同时 B→A,是瞬时同步的

    2024年02月12日
    浏览(51)
  • 软件测试技能,JMeter压力测试教程,请求头部自动签名带上X-sign参数(二十二)

    接口请求 body 带有 sign 签名参数,sign 签名是根据请求 body 除去 sign 本身参数后,拼接请求参数最后 md5 加密生成的 前面一篇是把 sign 前面参数放到请求的 body 里面,这篇继续讲把签名参数放到请求头部的情况 http 请求需要进行签名校验 X-Sign,放到请求头部 Content-Type: applic

    2024年02月12日
    浏览(53)
  • 软件接口测试有什么作用?接口测试有哪些好用工具?

    一、软件接口测试有什么作用? 在软件开发过程中,接口是不可避免的一部分。接口测试是为了检查软件系统中不同模块之间的接口能否正常工作,以及模块之间的数据是否能够互相传输而进行的测试。接口测试的主要作用包括保证系统区域间的互通性、降低软件的故障率、

    2024年02月06日
    浏览(69)
  • 【软件测试】接口测试工具APIpost

    说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告,实在气愤,一律删帖。 但是,看的多了,也就有了装一下看看的冲动了

    2024年02月13日
    浏览(52)
  • 软件接口测试是什么?有哪些好用的接口测试工具?

    在软件开发中,接口是不可避免的。软件接口测试是一种验证应用程序接口是否按照设计规范进行交互和协作的测试方法。接口测试是将模块之间的接口连接在一起以进行完整系统测试的关键部分。 当软件开发过程中不同模块之间需要数据交互,采用接口协议来实现模块之间

    2024年02月11日
    浏览(50)
  • 软件测试:功能测试-接口测试-自动化测试-性能测试-验收测试

    软件测试的主要流程 一、测试主要的四个阶段 1.测试计划设计阶段 :产品立项之后,进行需求分析,需求评审,业务需求评级,绘制业务流程图。确定测试负责人,开始制定测试计划; 2.测试准备阶段 :各成员编写测试用例、先小组内评审、后会议评审,测试样机和配件,

    2024年02月08日
    浏览(59)
  • 软件测试面试题——接口自动化测试怎么做?

    面试过程中,也问了该问题,以下是自己的回答: 接口自动化测试,之前做过,第一个版本是用jmeter 做的,1 主要是将P0级别的功能接口梳理出来,根据业务流抓包获取相关接口,并在jmeter中跑通,2 是整理了项目上的所有接口,先将单个接口跑通,然后再编写不同的接口用

    2024年02月14日
    浏览(58)
  • 软件测试——接口测试框架Flask与测试工具Postman、PyMySQL

    什么是Flask: Flask是一个Python Web框架,通常被称为微框架。它旨在保持应用程序的核心简单且可扩展。与其他Web框架不同,Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以将这些功能添加到应用程序中。Flask的优势在于它可以与你珠联璧合

    2024年04月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包