2017-02-16 3 views
1

Ich war nach diesem Tutorial für pytest:pytest nicht erlauben Klassen mit nicht-statischen Methoden

http://doc.pytest.org/en/latest/getting-started.html#grouping-multiple-tests-in-a-class

aber bemerkt, dass, wenn ich zu erstellen:

class ComplexTestClass: 
    """ 
    Complex and more nuanced tests for specific sentences 
    """ 
    def test_multiple_sentences(): 

Wenn ich nicht hinzufügen @staticmethod an Oben auf den Funktionen, bekomme ich einen Fehler auf der Funktion, wo er nicht mit () abheben kann und es wird in meinem PyCharm rot hervorgehoben.

Ist das Tutorial (das keine Notwendigkeit für statische Methoden zeigt) falsch, oder bin ich falsch und wird staticmethod meine Tests ungültig machen?

Antwort

3

Sie müssen das self Argument in der Methode, wenn Sie nicht ein @staticmethod erklärt:

def test_multiple_sentences(self): 
+0

nach dem 'pytest' docs, warum es das Beispiel hat es ohne' self' hat und ohne ' _init_'? Mein Ziel ist es, diese Klasse innerhalb von "pytest" und all ihren Methoden aufzurufen, wenn ich meine Tests durchführe. Wird 'staticmethod' das verhindern, wenn ich' pytest -q test_text.py' starte? –

+1

Das genaue Beispiel, das Sie mit * verlinken, hat "selbst" als Argument. Die Beispiele auf dieser Seite ohne ein 'self'-Argument sind Funktionen, die außerhalb einer' Klasse' definiert sind, nicht Methoden. Folgen Sie dem Beispiel, mit dem Sie verlinkt haben (d. H. Deklarieren Sie Ihre Testmethoden nicht als '@ staticmethod's und schließen Sie das' self' Argument ein) und alle Ihre Testfälle sollten laufen. – Billy

+0

Dumm mich. Du hast Recht. Danke. –