首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过模拟在单元测试上运行coverage.py

通过模拟在单元测试上运行coverage.py
EN

Stack Overflow用户
提问于 2015-03-07 12:06:01
回答 1查看 955关注 0票数 1

我试图在程序的单元测试中运行代码覆盖率。我在测试中使用模拟,这意味着我必须使用python3和up。我使用pip安装了coverage.py:

代码语言:javascript
复制
pip install coverage

安装工作正常,覆盖范围提前开始工作。问题是,当我试图在单元测试上运行覆盖率时,它使用python2.6运行,并在导入模拟上失败,尽管我的脚本以#!/usr/bin/python3 3开头:

代码语言:javascript
复制
coverage run ./my_tests.py

跟踪(最近一次调用):

文件"./my_tests.py",第9行,模块

从unittest.mock导入修补程序

ImportError:没有名为的模块

是否有一种方法可以将覆盖率配置为与python3一起运行?在默认情况下,是否有适用于python3的覆盖率版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-07 20:34:32

很明显,您的默认python有2.6。或者至少,您在2.6树中安装了复盖模块,它将“覆盖率”放在python26 26/Script中,然后使用2.6运行复盖。但是,如果您显式地运行2.x和3.x,而不仅仅是默认的,那么该模块可以同时使用其中的一个。

我碰巧在我的dev目录中克隆了它,从而“安装”了它。我还为我的特殊需要编写了一个cover.bat,它是在我的python存储库克隆中测试新的和修补好的idlelib文件,然后再提交它们。这是我的档案。与您的问题特别相关的是以%py%开头的行。我将其设置为3.4的存储库构建,但您也可以轻松地将其指向已安装的3.4,甚至可以将其作为输入。

代码语言:javascript
复制
@echo off
rem Usage: cover fileName [test_ suffix] # proper case required by coveragepy
rem filename without .py, 2nd parameter if test is not test_filename
setlocal
set py=34\pcbuild\python_d
set src=idlelib.%1
if "%2" EQU "" set tst=34/Lib/idlelib/idle_test/test_%1.py
if "%2" NEQ "" set tst=34/Lib/idlelib/idle_test/test_%2.py

%py% coveragepy run --pylib --source=%src% %tst%
%py% coveragepy report --show-missing
%py% coveragepy html
htmlcov\34_Lib_idlelib_%1.html
rem Above opens new report; htmlcov\index.html displays report index
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28914694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档