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

2、mock作用
前后端开发进度不一致,如果前端开发速度快于后端,需要一个假的接口用于模拟后端返回;
项目需要用到第三方接口,如果第三方接口未开发好,或者第三方接口没有测试环境,为了保证进度,需要模拟接口用于调试。

3、mock不足
mock的模拟行为与真实行为可能存在差异(返回结果是自己构造的),其结果就是虽然基于mock的测试通过了,但是基于真实对象的测试可能会存在失败。

Mock 一个 Server ,构造一个假的服务返回预期的结果,也是为了进行自己的测试。主要适用于接口&性能测试,Mock 方案和程序使用的语言无关,可以用 Java 实现,也可以用 Python 实现等。

Flask的特点是:结构简单,容易入门,利用Flask编写一个最简单的接口,如果没有Flask,则需要安装;
Flask的安装

pip install flask

如果pip没有安装的话,先执行如下代码进行安装pip:

curl https://bootstrap.pypa.io/get-pip.py | python3

安装成功,可以通过

pip --version

查看pip的版本。

下面是Mock 一个 Server ,构造一个假的服务返回预期的结果。
服务端代码:


from flask import Flask,request,json

app=Flask(__name__)

@app.route('/trade/purchase' ,methods=['POST'])
def purchase():
    res=json.loads(request.get_data())
    out_trade_no=res['out_trade_no']
    data = {
        'code':'400004',
        'msg':'Business Failed',
        'sub_code':'ACQ.TRADE_HAS_SUCCESS',
        'sub_msg':'交易已被支付',
        'trade_no':'222222222222',
        'out_trade_no':'20150320010101002'
    }
    data['out_trade_no'] = out_trade_no
    if out_trade_no != '20150320010101002':
        return {'code':'404','msg':'请求失败!'}

    return data

if __name__  ==  '__main__':
    app.run('127.0.0.1', '9999')

客户端代码:

import requests

data={
    'out_trade_no':'20150320010101001',
    'auth_code':'28763443843945664',
    'buyer_id':'2088201954065786',
    'seller_id':'2088102146225135',
    'subject':'Iphone6',
    'total_amount':'88.88',
}

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

运行截图:
在这里插入图片描述
通过对真实的调用信息进行发起请求,生成模拟的返回结果,大大简化了测试对调用接口的依赖,大大提高测试效率。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐