2016-06-09 6 views
0

Sagen, ich habe den folgenden Test:Pytest: Associate parametrisierte Leuchten mit den erwarteten Ergebnissen

@pytest.fixture(params=['a']) 
def ascii(request): 
    return ord(request.param) 

def test_ascii(ascii): 
    assert ascii == 97 

Dies funktioniert gut. Nun sagen wir, ich möchte 'b' als Parameter hinzufügen. Idealerweise könnte ich den Test einfach mit etwas wie @pytest.mark.parametrize('ascii_val', [97, 98]) dekorieren, ascii_val als einen Ausdruck zu dem Test hinzufügen und ascii == ascii_val bestätigen. Pytest würde jedoch behaupten auch 'a' gegen 98 und 'b' gegen 97.

Gibt es für mich eine Möglichkeit, 'a' mit 97 und 'b' mit 98 zu verbinden? Ich frage, weil ich eine Menge von Tests wie test_ascii haben werde, wo ich überprüfen werde, ob einige Eingaben bei verschiedenen Analysetechniken die gleiche Ausgabe ausgeben.

Antwort

1

Zumindest für das einfache Beispiel, das Sie geben, warum ein parametriertes Fixture verwenden, anstatt Ihren Test zu parametrisieren?

So etwas sollte funktionieren:

@pytest.mark.parametrize('char, expected', [('a', 97), ('b', 98)]) 
def test_ascii(char, expected): 
    assert ord(char) == expected 

Wenn Sie wirklich eine Halterung benutzen wollte, Sie immer ein (char, expected) Tupel von ihm zurückkehren konnte und damit arbeiten.

Verwandte Themen