MOCO框架及Flask模拟接口

MOCO框架及Flask模拟接口,第1张

主要内容:
1.熟悉moco框架实现接口模拟
2.基于Flask框架实现模拟接口

1.1 什么是MOCK
mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。


这个虚拟的对象就是mock对象.

1.2 MOCK应用场景

1.模拟第三方接口:第三方接口开发未完成或接口不稳定,业务测试需要提前进行接口测试。



2. 模拟后端接口:前后端分离项目,后端工没有完成接口开发,Mock模拟接口返回的数据。



3. 测试场景模拟:测试场景进行测试时需要了解真实对象如何被调用
4. 生产环境接口:业务接口不方便调用,防止产生脏数据等等

1.3 MOCO框架

Moco 是类似一个 Mock 的工具框架,一个简单搭建模拟服务器的程序库/工具,下载就是一个JAR包

MOCO特点:
1.只需要简单的配置request、response等即可满足要求
2. 支持http、https、socket,非常灵活
3. 支持在request 中设置 Headers , Cookies , StatusCode
4. 支持GET、POST、PUT、DELETE等请求方式
5. 无需环境配置,有java环境即可:安装环境必须先安装好jdk
6. moco采用热部署,修改配置后,立刻生效,无需重启服务。


只需要维护接口,也就是契约即可。



7. 对可能用到的数据格式都支持,如json、text、xml、file
8. 能与其他工具集成,如Junit、Maven、Gradle

1.4 moco下载安装
下载方式:直接获取现成的jar包(推荐)
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.3.0/
按需选择相应版本下载

1.5 模拟接口json配置
运行moco前建立一个json文件,因为模拟接口相关配置是在json文件里配置的。


熟悉并理解json格式的配置非常关键。


{
	"description":"鉴权接口-mock",
	"request":{ 
        "method":"POST",   #约定方法,支持GET、POST、PUT、DELETE等请求方式
		"uri":"/api/generateToken",  #约定uri
        "headers":{                    #约定请求头
			       "Content-Type":"application/json"
			    },
        "json":{                       #约定请求体参数-json
                    "appid":"wcX78980055XNGD999452",
                    "serect":"qoghzgKYTNyrqw88766DH"
            }
        },
	"response":{                #约定响应头
		"headers":{
			"Content-Type":"application/json"
            },
        "status":200,           #约定返回状态码
        "json":{                #约定响应体
                "status": "200",
                "errorCode": "SUCCESS",
                "msg": "ok",
                "data": {
                                    "Token": "wViSR7spVXW889GNKeOY",
                                    "softwareType": "APP"
                        }
            }
        
        }
}

1.6 启动moco服务

step1:cd /xx/moco/ //jar包所在文件夹
step2:
java -jar moco-runner--standalone.jar http -p 12306 -c foo.json

http代表这个模拟的是http请求
-p 12306 定义是服务端口号
-c foo.json 模拟对象配置json文件名`

2.基于Flask框架实现模拟接口


from flask import Flask, render_template, jsonify, request
import json

from flask import request
app = Flask(__name__)

@app.route('/api/demo', methods=['POST'], strict_slashes=False)
def api_login():
    data = request.get_json()
    print(' url= {url}, body= {body}'.format(url=request.url, body=json.dumps(data, ensure_ascii=False)))
    if data["var1"] == "value1" and data["var2"] == 'value2':
        return jsonify({
                        "status": "200",
                        "errorCode": "SUCCESS",
                        "msg": "ok",
                        "data": {
                                    "data": "xxxxxxxxxxxx",
                                    "softwareType": "xxxx"
                        }
        })
    else:
        return jsonify({"errorCode": "10021","msg": "systemError!"})

@app.route("/importData", methods=['GET','POST','PUT','DELETE'],strict_slashes=False)
def api_test():
    if request.method == 'POST':
        return jsonify({"code":"100200","msg":"importSuccess!"})


if __name__ == '__main__':
    app.run(host='0.0.0.0', port='5555', debug=True, ssl_context=('server.crt', 'server.key'))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/570503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存