Schreiben einer Pytest-Funktion zum Überprüfen der Ausgabe auf der Konsole (stdout) in Python?

Dieser Link Beschreibt, wie pytest zum Erfassen von Konsolenausgaben verwendet wird. Ich habe den folgenden einfachen Code ausprobiert, erhalte jedoch eine Fehlermeldung

import sys
import pytest
def f(name):
    print "hello "+ name

def test_add(capsys):
    f("Tom")
    out,err=capsys.readouterr()
    assert out=="hello Tom"


test_add(sys.stdout)

Ausgabe:

python test_pytest.py 
hello Tom
Traceback (most recent call last):
  File "test_pytest.py", line 12, in <module>
    test_add(sys.stdout)
  File "test_pytest.py", line 8, in test_add
    out,err=capsys.readouterr()
AttributeError: 'file' object has no attribute 'readouterr'

Was ist falsch und welche Lösung benötigt? Danke dir

EDIT: Laut Kommentar habe ich mich geändertcapfd, aber ich bekomme immer noch den gleichen Fehler

import sys
import pytest
def f(name):
    print "hello "+ name

def test_add(capfd):
    f("Tom")
    out,err=capfd.readouterr()
    assert out=="hello Tom"


test_add(sys.stdout)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage