Как очистить захваченный stdout / stderr в pytest? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть несколько тестов с утверждениями в цикле, каждое утверждение похоже на отдельный тест, и я не хочу, чтобы выходные данные предыдущих утверждений загрязняли журналы ошибок текущего ошибочного утверждения.

def test_foos(captured):
  foos = []  # some data
  for foo, bar in foos:
    captured.clear()
    assert logic(foo) == bar

Я нашел caplog.clear () , но, похоже, он не работает.

1 Ответ

1 голос
/ 17 мая 2019

Параметризовать свой тест . Передайте foos в качестве параметра, и pytest будет запускать тестовую строку assert несколько раз, записывая успех / неудачу, как если бы каждый из них был отдельным тестом.

import pytest

testdata = [
    (3,9),
    (4,16),
    (5,25)
]

@pytest.mark.parametrize("x,expected", testdata)
def test_foos(x, expected):
    assert logic(foo) == bar # in the example, say logic squares the input
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...