我有两个Python脚本:让我们称之为program.py和program_utils.py。
program.py看起来像这样:
docker exec -i mysql.5.7 mysql < dump.sql
program_utils.py中的get_json_object()如下所示:
from flask import Flask, request, jsonify
import program_utils
app = Flask(__name__)
@app.route('/mypage')
def my_func():
# Do some stuff here and get a URL parameter
my_var = request.args.get('my_var')
# Get JSON object from another function in program_utils
return program_utils.get_json_object(my_var)
我的问题是如何在program_utils中为get_json_object创建单元测试,以确保它以正确的格式返回对象?我已经尝试编写一个常规的单元测试(将该方法视为返回一个字符串),但是出现了一个运行时错误,说“在应用程序上下文之外工作”。
答案 0 :(得分:5)
您使用测试客户端测试Flask视图。使用app.test_client()
创建它,然后使用它来模拟对路线的请求。响应只包含原始数据,如果您想将其作为JSON进行比较,则需要加载它。
c = app.test_client()
rv = c.get('/mypage', query_string={'my_var': 'my_value'})
assert json.loads(rv.get_data()) == expected_data
Flask docs有一整节用于介绍这一点。 Werkzeug docs详细介绍。