【问题标题】:Python unittest: how to satisfy nose coverage for importing packagesPython unittest:如何满足导入包的鼻子覆盖
【发布时间】:2015-02-25 18:40:10
【问题描述】:

对于给定的 python 文件,顶部有以下几行:

import traceback
import datetime
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.conf import settings

如何编写单元测试以使这些行的鼻子不显示“缺失”?

【问题讨论】:

  • 你能说得更具体点吗?缺少什么显示?您是指覆盖率报告吗?
  • 假设我的帖子中的代码行是文件的前六行,鼻子覆盖将这些行显示为缺少代码覆盖。我想知道如何编写测试来覆盖这些行。
  • 好像文件导入后才开始覆盖。展示您如何运行测试。

标签: python django nose coverage.py python-coverage


【解决方案1】:

我认为,如果它在代码覆盖率中显示这些行缺失,则意味着该模块从未使用或导入。只要您成功导入这些模块,这些行就会显示在报告中,并且不需要额外的测试来验证导入那些经过良好测试的 django 模块的能力。只要您有一个测试该模块中某些内容的测试,就可以了。例如:

import traceback
import datetime
# from django.contrib.contenttypes import generic
# from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.conf import settings


def foo(a):
    return a + 5


def test_foo():
    assert foo(5) == 10

在此特定文件使用 --with-coverage 选项在鼻子下运行时将导致 100% 的覆盖率。我注释掉了 django.contrib 包,因为我没有使用 django-nose 并且没有适合此示例的设置,但这不重要。

【讨论】:

  • 我知道这是旧的,但现在我有同样的问题,实际上模块已经导入,因为我在这个模块中定义的类的方法中有绿线。对我来说,不先导入它就不可能从一个类中调用一个方法,但鼻子认为正是这样。
猜你喜欢
  • 2011-07-26
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2013-03-15
  • 2018-12-31
  • 1970-01-01
相关资源
最近更新 更多