在现有的Python / Flask应用程序上实现代码覆盖率和单元测试

问题描述 投票:0回答:1

在降低该实现的难度。

我需要什么:现有烧瓶应用程序的代码覆盖率结果,最好使用与pytest兼容的单元测试。

我看到的是:我只看到在应用程序启动时执行的行的覆盖率。当我使用pytest或postman将请求发送到服务器时,覆盖率指标不会改变。也就是说,我可以启动,停止服务器,并获得与启动,发送请求和停止服务器相同的结果。

我已经使用pytest,pytest-cov和coverage.py进行了调查。

我在site_packages中实现了sitecustomize.py coverage插件变通方法,以完全支持子流程覆盖。

我正在像这样运行Coverage Server:coverage run --source . app.py -m

然后在新终端中,我正在像这样运行pytest:pytest

然后我ctrl + c服务器,运行coverage report -m查看我的输出。

我的app.py具有如下内容:

from flask import Flask, request, render_template, make_response
from flask_cors import CORS
from flask_restplus import Resource, Api, reqparse
app = Flask(__name__)
CORS(app)
api = Api(app)

if ENV == 'dev':
    app.debug = True
else:
    app.debug = False
ns_namespace = api.namespace('namespace', description='namespace')
@ns_namespace.route("/")
class Namespace(Resource):
    def get(self):
        pass

if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0')

理想情况下,我想运行一个命令来启动app.py服务器,执行pytest,并记录实际的代码覆盖率。有人遇到过这样的事情吗?

python-3.x flask pytest coverage.py pytest-cov
1个回答
0
投票

发现问题。

结果是,app.debug = True是这里的罪魁祸首。 app.debug产生了一个单独的过程或类似的过程,我们无法深入了解覆盖范围。

© www.soinside.com 2019 - 2024. All rights reserved.