Reihenfolge der Unit-Tests in Python

Wie kann ich es so machen, dass Unit-Tests in Python (mit unittest ) in der Reihenfolge laufen, in der sie in der Datei angegeben sind?

  • Wie man richtig behauptet, dass eine Ausnahme in pytest erhoben wird?
  • Prüfung des verdrehten Protokolls
  • Übergeben Sie einen Python-Unit-Test, wenn eine Ausnahme nicht erhöht wird
  • Python unittest - Gegenteil von assertRaises?
  • Führen Sie Python unittest, so dass nichts gedruckt wird, wenn erfolgreich, nur AssertionError () wenn fehlschlägt
  • Unkritische unermessliche Fehler
  • Testen Sie, ob eine Klasse von einem anderen geerbt wird
  • Wie kann ich unittest.skip von python 3.1 in python 2.6?
  • 6 Solutions collect form web for “Reihenfolge der Unit-Tests in Python”

    Sie können das Standard-Sortierverhalten ändern, indem Sie eine benutzerdefinierte Vergleichsfunktion festlegen. In unittest.py finden Sie die Klassenvariable cmp standardmäßig auf die builtin-Funktion cmp gesetzt ist.

    Zum Beispiel können Sie die Ausführungsreihenfolge Ihrer Tests damit umgehen:

     import unittest unittest.TestLoader.sortTestMethodsUsing = lambda _, x, y: cmp(y, x) 

    Kluges Benennen.

     class Test01_Run_Me_First( unittest.TestCase ): def test010_do_this( self ): assertTrue( True ) def test020_do_that( self ): etc. 

    Ist ein Weg, um eine bestimmte Reihenfolge zu erzwingen.

    Wie oben erwähnt, sollten normalerweise Tests in Testfällen in einer beliebigen (dh zufälligen) Reihenfolge getestet werden.

    Allerdings, wenn Sie wollen, um die Tests im Testfall zu bestellen, anscheinend ist es nicht trivial. Tests (Methodennamen) werden aus Testfällen mit dir(MyTest) abgerufen, die eine sortierte Liste von Mitgliedern zurückgibt. Sie können einen klugen (?) Hack verwenden, um Methoden nach ihren Zeilennummern zu bestellen. Dies wird für einen Testfall funktionieren:

     if __name__ == "__main__": loader = unittest.TestLoader() ln = lambda f: getattr(MyTestCase, f).im_func.func_code.co_firstlineno lncmp = lambda a, b: cmp(ln(a), ln(b)) loader.sortTestMethodsUsing = lncmp unittest.main(testLoader=loader, verbosity=2) 

    Es gibt auch Testläufer, die das selbst machen – ich denke, py.test tut es.

    Benutze die Rüsselbibliothek, wie ich bereits erwähnt habe (siehe kurze Beschreibung dort).

    Ich habe eine Lösung für sie mit PyTest Bestellung Plugin hier zur Verfügung gestellt .

    Versuchen Sie py.test YourModuleName.py -vv in CLI und der Test wird in der Reihenfolge ausgeführt, in der sie in Ihrem Modul erschienen sind.

    Ich habe dasselbe getan und funktioniert gut für mich.

    Hinweis: Sie müssen das PyTest-Paket installieren und importieren.

    Python ist die beste Programmiersprache der Welt.