标签: python-coverage

python coverage模块可以有条件地忽略单元测试中的行吗?

使用nosetests和coverage模块,我希望代码的覆盖率报告能够反映正在测试的版本.考虑以下代码:

import sys
if sys.version_info < (3,3):
    print('older version of python')
Run Code Online (Sandbox Code Playgroud)

当我在python版本3.5中测试时,print()显示为未经测试.我希望覆盖范围忽略该行,但仅当我使用python版本3.3+进行测试时

有没有办法# pragma: no coverprint()声明中做一些事情只是为了什么时候sys.version_info不小于(3,3)?实际上,我想做这样的事情:

import sys
if sys.version_info < (3,3):
    print('older version of python') # pragma: [py26,py27,py32] no cover
Run Code Online (Sandbox Code Playgroud)

python unit-testing code-coverage python-coverage

3
推荐指数
2
解决办法
1525
查看次数

如何安装python的coverage模块并在Windows中从命令行使用它

我想学习如何使用python的coverage.py模块来检查我的代码的覆盖模式.我尝试从各种来源阅读该工具,最后使用'pip'实用程序将其安装在我的Windows 7机器上.安装后,coverage模块安装在C:\ Python27\Lib\site-packages中.

现在,我正在阅读有关如何在此页面中使用它的说明:作者的安装说明.我按照本页面给出的安装说明进行操作.但是,在我安装之后,我不确定如何在命令行中使用该工具?根据作者在pip安装工具后,应该能够调用该命令

coverage --version 
Run Code Online (Sandbox Code Playgroud)

并希望看到一些输出.但是,当我运行此命令时,我发现命令未找到错误.根据我的说法,这是预期的行为,因为coverage只是另一个python模块(即具有.py扩展名)而不是独立的可执行文件.所以,我不知道如何以独立的方式运行它.

有人请提供安装工具的确切细节.我只需要安装帮助.我将从nedbatchelder.com的"Coverage命令行用法"一文中了解CMD的用法.

python code-coverage coverage.py python-coverage

2
推荐指数
1
解决办法
5106
查看次数

如何在 Python 中获得 100% 的代码覆盖率?

学习.py

def multiply(a, b):
    return a * b

def addition(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

test_learning.py

import unittest

from learning import *

class Test(unittest.TestCase):
    def test_multiply(self):
        self.assertEqual( multiply(3,4), 12)

    def test_addition(self):
        self.assertEqual( addition(5,10), 15)       

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

50% 的代码覆盖率

虽然两种方法都经过测试,但是代码覆盖率都是50%

C:\>coverage run learning.py test_learning.py

C:\>coverage report

Name       Stmts   Miss  Cover
------------------------------
learning       4      2    50%
Run Code Online (Sandbox Code Playgroud)

python tdd code-coverage coverage.py python-coverage

2
推荐指数
1
解决办法
1566
查看次数

使用coverage.py在python中进行代码覆盖

我试图了解python脚本的运行覆盖率.我无法理解我尝试为具有无限循环的简单脚本运行coverage的情况:

#!/usr/bin/python

print "The only statement!!!"

while True:
    pass
Run Code Online (Sandbox Code Playgroud)

在调用此脚本的覆盖范围后,我将终止此过程,因为它是一个无限循环,如果我尝试得到结果,我会得到:

  1. coverage运行sample.py
  2. 杀死样本
  3. 报道报告-m

Name Stmts Miss Cover Missing -------------------------------------

我没有收到任何报道.我在做一些根本错误的事吗?

python code-coverage coverage.py python-coverage

2
推荐指数
1
解决办法
1414
查看次数