微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在unittest可以找到的情况下,coverage为什么找不到烧瓶模块?

如何解决为什么在unittest可以找到的情况下,coverage为什么找不到烧瓶模块?

我有一个flask项目,当我运行unittest时可以正常工作,但是当我运行ModuleNotFoundError: No module named 'flask'时失败了coverage

下面的相关代码和shell会话:

$ python -m unittest
..
----------------------------------------------------------------------
Ran 2 tests in 0.041s

OK

$ coverage run -m unittest
E
======================================================================
ERROR: test.test (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test.test
Traceback (most recent call last):
  File "<...>/.pyenv/versions/3.8.5/lib/python3.8/unittest/loader.py",line 436,in _find_test_path
    module = self._get_module_from_name(name)
  File "<...>/.pyenv/versions/3.8.5/lib/python3.8/unittest/loader.py",line 377,in _get_module_from_name
    __import__(name)
  File "<path to project>/test/test.py",line 3,in <module>
    from main import app
  File "<...>/main.py",line 1,in <module>
    from flask import Flask,jsonify,request
ModuleNotFoundError: No module named 'flask'
# main.py
from flask import Flask,request

app = Flask(__name__)

...
# requirements.txt

...
Flask==1.1.2
...
# test.py

import unittest
from main import app

...

解决方法

我的朋友帮助我调试了这一点-事实证明,即使我在coverage中安装了venv,它也是从全局环境中提取coverage

使用python -m coverage run -m unittest代替正确的覆盖范围,然后运行完美。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。