Rüssel ist ein Nose-Erweiterung, die höhere Ebene Tests erleichtert.
Ändert die Testklassen werden durch sie zu zwingen, über Dekorateure, die nützlich Metadaten enthalten registrieren, wie das, was Gruppen entdeckte sie sich befinden, ob sie haben Abhängigkeiten zu anderen Tests, und wenn sie ignoriert werden sollte.
Proboscis sortiert alle registrierten Tests in die gewünschte Fahrbefehl konstruiert dann eine Testsuite, die es Nase geht. Es kann auch auf diese Liste filtern, so dass es möglich ist, anzugeben, welche Gruppen von Tests, die Sie ohne Umweg in die genauen Testklassen ausführen möchten. Zur Laufzeit werden Tests, die auf anderen Tests, die es versäumt haben hängen automatisch übersprungen werden soll.
Ein großer Teil dieser Funktionalität wurde von TestNG "inspiriert". Wenn Sie von diesem Rahmen anreisen, Rüssel die Hauptmerkmale derzeit Angebote sind abhängig Test Bestellung (derzeit nach den Klassen beschränkt) und die Möglichkeit, Ihre Tests in Gruppen unabhängig von der Struktur ihrer Module und Pakete zu arrangieren.
Mit Proboscis ist es möglich, Tests, die auf einem Web-Dienst (oder einem anderen Abhängigkeits Sie möchten, dass nur einmal initialisieren) wie folgt ab schreiben:
Test (Gruppen = ["service.tests"], depends_on_groups = ["service.initialization"])
& Nbsp; & nbsp; & nbsp; Klasse WhenConnectingAsAdmin (unittest.TestCase):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def test_change_profile_image (Selbst-):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.client = mymodule.ServiceClient (service_config)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.assertEquals ("default.jpg" self.client.get_profile_image ())
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.client.set_profile_image ("spam.jpg")
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.assertEquals ("spam.jpg" self.client.get_profile_image ())
Dann schreiben Sie den Code zu starten und ordnungsgemäß heruntergefahren, dass Web-Service in einem anderen Modul als erstklassiges Test selbst:
Test (Gruppen = ["service.initialization"])
& Nbsp; & nbsp; & nbsp; Klasse StartWebServer (unittest.TestCase):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def test_start (Selbst-):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Starten Sie Web-Server, gibt dann eine connect.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; mymodule.start_web_server ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; client = mymodule.ServiceClient (service_config)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.assertTrue (client.service_is_up)
& Nbsp; & nbsp; & nbsp; Test (Gruppen = ["service.shutdown"],
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; depends_on_groups = ["service.initialization", "service.tests"],
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; never_skip = True)
& Nbsp; & nbsp; & nbsp; Klasse Stopservice (unittest.TestCase):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def test_stop (Selbst-):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; client = mymodule.ServiceClient (service_config)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; wenn client.service_is_up:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; mymodule.stop_web_server ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.assertFalse (client.service_is_up ())
Mit Proboscis Sie können sicher sein, die Tests in der gewünschten Reihenfolge ausführen, auch wenn Sie mehrere Testklassen hinzufügen, ändern ihre Namen, oder verschieben Sie sie in verschiedene Module
Anforderungen .
- Python
- Nase
Kommentare nicht gefunden