我很难让coverage.py和我的烧瓶应用程序一起工作。
我正试图通过子进程说明来设置它:http://nedbatchelder.com/code/coverage/subprocess.html
在我的create_app()函数(它是一个应用程序工厂)中,我有以下内容:
if settings.FLASK_ENV == 'TEST':
coverage.process_startup()在我的测试套件中,我有以下内容:
# Need to add the 'COVERAGE_PROCESS_START' environment variable for subprocesses
if os.getenv('COVERAGE'):
test_env['COVERAGE_PROCESS_START'] = 'tests/.coveragerc'
test_env['FLASK_ENV'] = 'TEST'
test_process = subprocess.Popen(["gunicorn", "run_server:app", '--log-level=warning', '-w 1', '-b {host}:{port}'.format(host='127.0.0.1',port=port())],
env=test_env)当我的测试结束时我会..。
coverage.save()
coverage.combine()
percent_covered = coverage.html_report(directory='covhtml')
print "Percent Covered: {}".format(percent_covered)
coverage.stop()但是唉..。报道报告似乎并没有合并。
注意:在调用联合之前,如果我看到一个类似于ls -alt的目录.
-rw-r--r-- .coverage.Jonathans-MacBook-Pro-3.local.49352.501916 -rw-r--r-- .coverage.Jonathans-MacBook-Pro-3.local.49352.931352
为了完整起见,我的.coveragerc是:[run] parallel = True
会喜欢在正确的方向点--谢谢!
发布于 2014-05-20 13:53:07
让它发挥作用--多亏了@NedBat的一些指导。
问题是野牛正在产生更多的子过程--以及那些没有被监控的子过程。
为了解决这个问题,我需要利用站点模块的sitepackage.py特性。公平地说,这已经被http://nedbatchelder.com/code/coverage/subprocess.html记录在案了--但我只是做错了。
您需要创建该sitepackage.py文件并将其放在您的site-packages文件夹中。然后,在环境中运行的任何进程(或子进程)将在启动进程之前执行该文件。
发布于 2014-05-20 06:39:08
如果您使用鼻子进行测试,那么它非常简单。只管跑:
nosetests --with-coverage --cover-package=yourpackagename--cover-html --cover-erasehttps://stackoverflow.com/questions/23745370
复制相似问题