簡體   English   中英

pytest 可以捕獲 doctest 的輸出嗎?

[英]Can pytest capture output from a doctest?

我正在使用--doctest-modules運行pytest而沒有其他選項。

我有一個失敗的doctest測試,我正在嘗試通過向底層代碼添加print()語句來調試問題。

對於我的常規(非doctest )測試,捕獲輸出正在工作並按預期顯示,但是doctest測試沒有在我的pytest輸出中顯示 stdout,即使我在那里發生了print()語句。

我可以將我的doctest重寫為非doctest測試,以便讓那些print()語句流過,但這聽起來非常迂回。

有什么方法可以告訴pytest我也希望它捕獲doctest的輸出?

$ python --version
Python 3.7.2
$ pytest --version
This is pytest version 3.10.1, imported from /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest.py
setuptools registered plugins:
  pytest-xdist-1.26.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/xdist/plugin.py
  pytest-xdist-1.26.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/xdist/looponfail.py
  pytest-pythonpath-0.7.3 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_pythonpath.py
  pytest-mock-1.10.0 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_mock.py
  pytest-forked-1.0.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_forked/__init__.py
  hypothesis-4.4.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/hypothesis/extra/pytestplugin.py
  flaky-3.5.3 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/flaky/flaky_pytest_plugin.py

將我的評論變成答案:最簡單的方法是打印到 stderr,因為doctest只捕獲 stdout 進行比較。 例子:

import sys


def greet(who):
    """Greet someone.

    >>> greet('world')
    'Hello world'

    >>> greet('fizz')
    'Hello fizz'

    >>> greet('buzz')
    'Hello buzz'
    """

    print('input:', who, file=sys.stderr)
    return f'Hello {who}'

運行測試:

$ pytest --doctest-modules -sv
======================================= test session starts ========================================
...
collected 1 item                                                                                   

spam.py::spam.greet input: world
input: fizz
input: buzz
PASSED

===================================== 1 passed in 0.03 seconds =====================================

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM