doctest不测试模块中的类方法

时间:2017-03-03 11:39:29

标签: python doctest

我无法通过doctest测试我的模块类方法。

我的模块看起来像这样:

simplemod
├── A.py
└── __init__.py

A.py包含:

class A:
    def method(self):
        """This is a test

        >>> True
        False
        """
        pass

(所以测试应该失败)

__init__.py包含

from .A import A

__test__ = {'A': A}

然后我跑

>>> import doctest, simplemod
>>> doctest.testmod(simplemod)
TestResults(failed=0, attempted=0)

为什么不进行doctest测试A.method

1 个答案:

答案 0 :(得分:0)

我发现了原因。

为什么它不起作用

doctest尝试检测哪些测试不属于测试模块,并且不运行它们。这可以防止运行依赖项的所有测试。

在这里,我的doctest属于simplemod.A,而我正在测试simplemod

推荐的解决方案

来自the doctest documentation about testing complex packages

A.py重命名为a.py,并将__init__.py替换为

from . import a
A = a.A

def load_tests(loader, tests, ignore):
    import unittest
    import doctest
    tests.addTests(doctest.DocTestSuite(a))
    return tests

然后您可以使用简单的

运行测试

$ python -m unittest

在父文件夹中。