【问题标题】:django doctests not being rundjango doctests 没有运行
【发布时间】:2011-10-15 15:05:10
【问题描述】:

我在使用 django-nose 运行 django doctest 时遇到问题。添加到 /tests 目录的单元测试运行良好,但 doctests 却不行。

我正在尝试在我的“季节”模块上运行文档测试:

python manage.py test season

并得到这个输出:

nosetests --verbosity 1 season --with-doctest
Creating test database for alias 'default'...

----------------------------------------------------------------------
Ran 0 tests in 0.001s

OK
Destroying test database for alias 'default'...

我只是在尝试一个基本的 doctest 来尝试让它工作,例如:

    """
    >>> 1+1 == 2
    True
    """

这是在我的 models.py 中。我已经尝试过其他实际测试代码的文档测试,但仍然没有看到任何测试运行。当我使用 --verbosity 3 运行时,我看到一行可能是问题所在:

nose.selector: INFO: <models.py path> is executable; skipped

我找不到更多关于这意味着什么的信息。

settings.py中的相关sn-ps:

INSTALLED_APPS = (
    'south',
    'django_nose',
    'season',
)

# Django-nose configuration
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-doctest']

django_nose 在 INSTALLED_APPS 中位于南之后,如 django-nose 文档中所指定。我正在使用此处建议的 --with-doctest 参数:Nose not running Django doctests,并已将我的 django-nose 更新为此处建议的最新版本:Why isn't django-nose running the doctests in my models?

这些是我正在使用的版本:
django 1.3
python 2.7.1
django-nose 0.1.3
鼻子 1.1.2

我觉得我在这里缺少一些基本设置。让我知道是否需要任何其他信息。任何帮助表示赞赏,谢谢!

【问题讨论】:

    标签: python django testing nose doctest


    【解决方案1】:

    我意识到 OP 指定了 1.3,但是由于在搜索“django doctests do not run”时出现了这个答案,所以这是我在 Django doctests in views.py 中的一个答案中对 1.6 的答案。在这个版本的 Django 文档测试中,没有自动包含,所以在 $APP/tests.py 你需要:

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

    [这只会在 tests.py 本身中找到文档测试;要让它在其他模块上运行 doctest,比如 myapp/models.py,你需要 from myapp import modelstests.addTests(doctest.DocTestSuite(models))]

    【讨论】:

    • 这会使鼻子变得无关紧要(这对我来说很好 - 我只是尝试它,因为它应该解决这个问题),但仍然没有找到任何文档测试。我可以指定特定的模块,但这不是自动的...
    • 对,上面只找到tests.py本身的doctests。
    • 太棒了!只是确认这仍然适用于 Django 3.2
    【解决方案2】:

    详细信息告诉您您的 models.py 文件被忽略,因为它是可执行的。这意味着您需要这样做:

    chmod -x models.py
    

    除非您有特定原因将该文件设置为可执行文件,在这种情况下,将--exe 添加到您的NOSE_ARGS 就足够了。

    【讨论】:

      【解决方案3】:

      nosetests --verbosity 1 season --with-doctest

      Usage: manage.py test [options] [appname ...]

      也许您只需将season 移动到然后结束。

      【讨论】:

      • 我在 NOSE_ARGS 中使用 --with-doctest 参数运行“manage.py 测试季”。如果我从 NOSE_ARGS 中删除 --with-doctest,并运行“manage.py test --with-doctest season”,我会得到相同的结果。所以我认为这就是“manage.py test”运行nosetests的方式。还有其他可能吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2012-02-14
      • 2021-05-23
      • 2016-10-27
      相关资源
      最近更新 更多