循环遍历蓝图中的所有规则并检查json文件,flask
我正在测试一个Flask应用程序。我有很多路由,看起来像这样:
@bp.route('/place', methods=['GET'])
def get_json():
...
return json.dumps(some_data)
我想做的是把这个蓝图实例化,然后检查所有返回JSON的函数,确保它们返回的JSON是我预期的。在测试用例中,我目前有这个:
from blueprint.my_bp import my_bp
app = Flask(__name__)
app.register_blueprint(my_bp, url_prefix='/test')
my_bp.data = fake_data
def tests():
with app.test_client() as c:
for rule in app.url_map.iter_rules():
if len(rule.arguments) == 0 and 'GET' in rule.methods:
resp = c.get(rule.rule)
log.debug(resp)
log.debug(resp.data)
不过,我有一个方法看起来像这样,因为它还没有实现:
@bp.route('/')
def show_summary():
abort(404)
这个方法会出现在我的测试中,因为它在技术上包含了'GET'这个方法。
鉴于此,有没有办法限制测试只包含那些返回JSON的函数呢?
1 个回答
1
一种方法是检查响应是否返回了JSON格式的数据。你可以试试下面这样的代码:
resp = c.get(rule.rule)
try:
json_data = resp.loads(resp.data) # this line will throw exception if not JSON
log.debug(resp)
log.debug(json_data)
except:
pass