pytest 的无用输出

Unhelpful output from pytest

TLDR:如何从 pytest 获得更好的输出?

我将 Django 与常规 python3 单元测试一起使用。 我刚刚切换到 pytest-django 进行 运行 测试。

pytest 对我的几乎所有测试(总共 149 个)都抛出错误。 出现此错误的页面和页面。

self = <RegexURLResolver 'project.urls' (None:None) ^/>

    @property
    def reverse_dict(self):
        language_code = get_language()
        if language_code not in self._reverse_dict:
            self._populate()
>       return self._reverse_dict[language_code]
E       KeyError: 'en-us'

这不是问题所在。这让我误入歧途。

我的 views.py 文件中有一个语法错误。 ./manage.py test 结果:

snip

File "/home/roland/project/views.py", line 20 code = zip(list1, list2])

SyntaxError: invalid syntax

注意最后一个:] 这就是问题所在。

所以:在使用 pytest 时如何获得更有用的问题输出?

顺便说一句: 在找到这个并滚动回 pytest 输出后,提到了语法错误。它只是被埋在输出中。

您可以使用 --maxfail=1 选项,这样它会在第一次失败时立即停止。

此外,请确保您的 pytest.ini 设置正确,以便 pytest 知道它应该使用 django-pyest。

[pytest]
DJANGO_SETTINGS_MODULE='myapp.settings'

对于我的工作流程,我通常会执行以下操作:

  • 运行 pytest --maxfail=1 myfile.py &> pytest-output.txt
  • tail、grep 或在文本文件中搜索错误。
  • 修复和迭代

还有很多其他配置选项可以帮助您从 pytest 获得更有意义的输入。