美文网首页
python web接口测试--使用flask框架进行mock测

python web接口测试--使用flask框架进行mock测

作者: D_w | 来源:发表于2021-09-29 14:02 被阅读0次

web接口测试为什么要mock呢

(1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑。

(2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理。

前后端项目中,后端接口开发完成之前,接口联调

依赖的上游项目的接口尚未开发完成,需要接口联调测试;

被测单元依赖的对象较难模拟或者构造比较复杂。

这里选择使用python的flask框架进行mock操作,Flask是由python实现的一个web微框架,安装可以通过pip install flask或pycharm安装库的方式。

1.先简要介绍下flask的简单使用

from flask import Flask       # 引入Flask类
app = Flask(__name__)     # 创建实例并将当前模块名传入
@app.route('/')                    # 该装饰器的参数是个路由,可以理解为下面的函数将在这个路由中执行
def index():
    return 'Hello World'
if __name__ == '__main__':
    app.debug = True # 设置调试模式,生产模式的时候要关掉debug
    app.run()               # 运行

其中前两行都是固定写法,第三行中注意这个路由的意思(我理解就是跟在主页地址后到目标网页的相对路径)最后一行运行也是固定写法

2.Request对象

from flask import Flask,url_for,request,render_template

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        if request.form['user'] == 'admin':
            return 'Admin login successfully!'
        else:
            return 'No such user!'
    title = request.args.get('title', 'Default')
    return render_template('login.html', title=title)
if __name__ == "__main__":
    app.run(debug=True)

request中”method”变量可以获取当前请求的方法,即”GET”, “POST”, “DELETE”, “PUT”等;”form”变量是一个字典,可以获取Post请求表单中的内容,”request.args.get()”方法则可以获取Get请求URL中的参数,该函数的第二个参数是默认值,当URL参数不存在时,则返回默认值。

3.mock数据

直接看代码

# -*- coding:utf-8 -*-
from flask import Flask,request

app = Flask(__name__)
class Datebase():
    def __init__(self):
        self.address_success = {
            "msg": "success",
            "code": 0,
            "data": {
                "data": [
                    {
                        "id": "235",
                        "alias": "123123",
                        "name": "123213",
                        "tel": "123213",
                        "province_name": "北京市",
                        "city_name": "东城区",
                        "county_name": "东华门街道",
                    }
                ]
            }
        }

        self.address_error = {"msg":"返回失败","code":-400,"data":""}

datebase = Datebase()

@app.route("/useraddress/index", methods=["GET"])  # 地址详情路由
def queryInfo():
    address_id = request.args.get("flag")
    if int(address_id) == 1:
        return datebase.address_success
    if int(address_id) == 0:
        return datebase.address_error

if __name__ == '__main__':
    app.run(port=8080)

在这里先封装了了访问成功和失败的数据,在@app.route中指定路由和请求方式,
request.args.get("flag")获得url中"flag"标签对应的值,后面对该值进行判断,mock出不同返回结果。

image.png

相关文章

网友评论

      本文标题:python web接口测试--使用flask框架进行mock测

      本文链接:https://www.haomeiwen.com/subject/rtxjnltx.html