2016-05-20 7 views
12

Ich habe versucht, Komponententests mit Pytest in Python auszuführen. Ich hatte ein Modul mit einer Klasse und einigen Methoden innerhalb dieser Klasse geschrieben. Ich habe einen Einheitentest für dieses Modul geschrieben (mit einer einfachen assert-Anweisung, um die Gleichheit der Listen zu überprüfen), wo ich die Klasse zuerst mit einer Liste instanziiere. Dann rufe ich eine Methode für dieses Objekt (von der Klasse) auf. Sowohl test.py als auch das zu testende Skript befinden sich im selben Ordner. Wenn ich pytest darauf laufen lasse, bekomme ich "0 Gegenstände".pytest beendet mit keinem Fehler, aber mit "gesammelten 0 Elemente"

Ich bin neu in pytest, und bin aber in der Lage, ihre Beispiele erfolgreich auszuführen. Was fehlt mir hier?

Lauf Python-Version 3.5.1 und pytest Version 2.8.1 auf Windows 7.

Mein test.py Code:

from sort_algos import Sorts 

def integer_sort_test(): 
    myobject1 = Sorts([-100,10,-10]) 
    assert myobject1.merge_sort() == [-101,-100,10] 

sort_algos.py ist eine Modulklasse Sortierungen enthalten. merge_sort ist eine Methode unter Sortierungen.

+0

Bitte poste ein [mcve]. Was würden Sie als Ergebnis erwarten, wenn Sie eine leere '.py' Datei platzieren? – Zulan

+0

Zufallsspeicher - etwas über '.py' wird übersprungen, wenn es ausführbar ist - sehen, ob es ist und es entweder in nicht ausführbare ändern, oder sehen, ob' pytest' eine 'include executable' Option hat? – dwanderson

+0

@ Zulan, Beispielcode zu meinem Beitrag hinzugefügt –

Antwort

24

pytest sammelt Tests nach einer Namenskonvention. Standardmäßig muss jede Datei, die Tests enthalten soll, mit test_ benannt werden und jede Funktion in einer Datei, die als Test behandelt werden soll, muss ebenfalls mit test_ beginnen.

Wenn Sie Ihre Testdatei in test_sorts.py umbenennen und die oben angegebene Beispielfunktion wie test_integer_sort umbenennen, werden Sie feststellen, dass sie automatisch erfasst und ausgeführt wird.

Dieser Test sammelt Verhalten can be changed nach Ihren Wünschen. Um es zu ändern, müssen Sie über configuration in pytest lernen.

+0

vielen Dank Ja, das hat funktioniert. OMG, das habe ich nie bemerkt! –

+0

Ich bin froh, dass ich helfen konnte. Würde es Ihnen etwas ausmachen, dies als die richtige Antwort zu markieren? Vielen Dank! – cewing

+0

Jetzt kann ich, und fertig! –

Verwandte Themen