pytest:从夹具打印

时间:2016-01-16 11:58:42

标签: python pytest

我正在使用Pytest编写测试。我有这样的夹具:

@pytest.yield_fixture(autouse=True, scope='session')
def manage_tests():
    print("Do stuff...")
    do_stuff()
    yield

我在那里放了一个print语句,所以当我运行测试时,我可以在控制台中看到它,以便更好地了解程序正在做什么。但是我在控制台中看不到那个文字,我猜测pytest吞下它。有没有办法从灯具打印?

3 个答案:

答案 0 :(得分:4)

Pytest不会吞下输出,默认情况下不会显示。要在控制台中查看输出,请尝试使用-s选项运行测试,例如:

pytest -s <path_to_file>

答案 1 :(得分:2)

使用pytest 3使用此灯具:

@pytest.fixture()
def tprint(request, capsys):
    """Fixture for printing info after test, not supressed by pytest stdout/stderr capture"""
    lines = []
    yield lines.append

    with capsys.disabled():
        for line in lines:
            sys.stdout.write('\n{}'.format(line))

答案 2 :(得分:0)

我可以看到一份印刷声明。但是有几件重要的事情要注意:

  • 因为你有scope=session,所以这只会在第一次测试中执行。
  • 如果第一次测试通过,则不打印任何内容。您可以使用命令行选项-s强制stdout打印(==未被pytest捕获)。