I have a simple little Flask app and created a suitably simple test script, aimed at making sure I covered much of the executable code. It fires up the app with coverage enabled and hits it with a bunch of requests, then exits. When testing, I have coverage enabled:
CMD="$(which flask) run -h localhost -p $PORT" if [ "x$DOCOVER" = "xtrue" ] ; then coverage run -a $CMD else $CMD fi Coverage seems to do the right thing, creating a .coverage file on exit, and when I run the annotate, report, or html commands it does the right thing. Still, it never actually marks any statements within functions as having been executed. Here's coverage from a manual run where I poked the server with three debug endpoints: > if FLASK_DEBUG: > @app.route("/env") > def printenv(): ! return jsonify(dict(os.environ)) > @app.route('/api/help') > def app_help(): > """Print available functions.""" ! func_list = {} ! for rule in app.url_map.iter_rules(): ! if rule.endpoint != 'static': ! func_list[rule.rule] = str(app.view_functions[rule.endpoint]) ! return jsonify(func_list) > @app.get('/shutdown') > def shutdown(): ! func = request.environ.get('werkzeug.server.shutdown') ! if func is None: ! raise RuntimeError('Not running with the Werkzeug Server') ! func() ! return 'Server shutting down...\n' Clearly, coverage noticed the action which happened during import, but despite the fact that I really did request /env, /api/help, and /shutdown, it never thought any of them were called. Any idea what I'm missing? Thx, Skip Montanaro
_______________________________________________ code-quality mailing list -- code-quality@python.org To unsubscribe send an email to code-quality-le...@python.org https://mail.python.org/mailman3/lists/code-quality.python.org/ Member address: arch...@mail-archive.com