我很难让Python的“coverage”模块正常工作。
我没有修改或添加到Python目录的权限,因此无法安装easy_install to setup coverage。
通过将coverage目录添加到python路径来解决这个问题。
Coverage工作正常,输入covereage --version
到shell输出版本。coverage help
显示所有可用的命令。一切看起来都很好。
我可以在简单的小脚本上运行覆盖。
但是,当在5个模块(一个已测试为工作的脚本)上运行带有大量导入的大型脚本时,当使用coverage run [normal commands]
运行命令时,脚本将执行并失败,因为找不到某些模块。
这里有个故障-
无覆盖的命令行(正常工作):
我通过运行./script_name.py arg1 arg2 arg3
调用脚本
当我尝试通过输入:python script_name.py arg1 arg2 arg3
运行脚本时,脚本失败,无法导入模块:
Error message:
ImportError: No module named cx_Oracle
具有覆盖范围的命令行:
coverage run ./script_name.py arg1 arg2 arg3
"No file to run: 'main.py'"
coverage run {[full_path_to_module_name}./script_name.py arg1 arg2 arg3
Now we are getting somewhere. Coverage is clearly invoked and working, put I get that import error:
Error message:
ImportError: No module named cx_Oracle
我想我也遇到过类似的问题,通过这样的报道解决了这个问题:
python -m coverage run [normal commands]
特别是在我的情况下
python -m coverage run -m unittest discover
显然,这是一个使用不同python安装的覆盖情况,因为我的模块被报告丢失,但它只安装在我的虚拟env中,而不是在我的全局env中。
好消息是,显式地使用“python”运行,并使用coverage.py生成相同的结果。坏消息是,结果是一条错误消息。
似乎有多个Python安装。一个由“../script\u name.py”找到,另一个由“python./script\u name.py”找到。
要诊断此问题,请将这些行添加到script_name.py的顶部:
这将显示正在调用的Python可执行文件,以及模块的搜索路径。以两种方式运行脚本将显示不同的结果,您应该能够了解发生了什么。
我会补充我的经验,因为有人可能会犯同样的错误。
我在一个没有安装覆盖率的python虚拟环境(venv)中运行覆盖率。执行覆盖我实际上是调用全球安装的覆盖。
使用
pip3 install coverage
在本地安装解决了这个问题,现在使用python3 -m coverage run myfile.py
。相关问题 更多 >
编程相关推荐