Python unittest:如何满足导入包的鼻子覆盖范围

Dun*_*can 5 python django nose coverage.py python-coverage

对于给定的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
Run Code Online (Sandbox Code Playgroud)

如何编写单元测试,导致鼻子没有显示"缺失"的那些线?

Ole*_*siy 0

我认为如果它显示代码覆盖率中缺少这些行,则意味着该模块从未使用或导入。只要您成功导入这些模块,这些行就会显示在报告中,并且不需要额外的测试来验证导入这些经过良好测试的 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
Run Code Online (Sandbox Code Playgroud)

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