所谓挡板程序,就是在被测程序和其依赖的测试环境之间建立一个挡板,模拟依赖环境的返回,降低其对环境的依赖性。挡板程序一般用来解决以下问题:
开发一个挡板程序可以很简单,有多简单呢?简单几行代码就可以搞定静态地址、get请求、post请求的返回。
from flask import Flask, request
#创建Flask实例
app = Flask(__name__)
#通过路由模拟静态返回
@app.route('/hi')
def index():
return 'hi, 服务起来啦'
#模拟get请求,参数不区分大小写
@app.route('/geta', methods=['GET'])
def get():
return request.args.get('a')
#模拟post请求
@app.route('/postb', methods=['post'])
def post():
return request.form.get('b')
#启动服务
if __name__ == '__main__':
app.run('127.0.0.1', 9000)
上面是一个基于Flask的Python程序,在命令行中输入以下命令,就可以启动挡板服务。
python run.py
要运行这个程序,首先要安装python (Flask支持 Python 3.4 及更高版本的 Python 3 、 Python 2.7 和 PyPy,我用的是python 3.7),然后安装Flask包,就可以使用了。
pip install Flask
服务启动成功后,我们可以用浏览器访问服务地址(http://127.0.0.1:9000/hi)验证:
我们还可以使用工具postman、curl等验证通过form提交的post请求能够被正确返回:
上面是最简单的场景下挡板服务的实现。在实际项目中,我们往往需要处理更加复杂的情况,比如说数据的加密,各种参数和数据传递的处理,等等。因此,在项目中的挡板测试服务,一般需要以下步骤:
各个项目的具体挡板实现需求不同,此处就不展开叙述各个部分的实现。本文旨在说明挡板服务的入门并不难,投入成本不高,却可以解决项目中的某些痛点,性价比挺高。但是,挡板测试并不能代替功能测试,只是一个辅助手段。模拟一个全量的依赖系统响应返回的成本是很高的,代价在于穷举各种场景和返回值。在一般的项目中,模拟一个完全的挡板服务的代价,高于其产出,因此挡板测试不能完全取代功能测试。特殊情况下除外哈!即使完全模拟了被依赖系统的返回,去掉挡板后的真实业务测试还是建议要走一遭的,以保证业务的完整性和正确性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。