slurf is een Tuitextensie dat hogere niveau testen vergemakkelijkt.
Wijzigingen hoe testen klassen worden ontdekt door hen te dwingen zich aanmelden via decorateurs die nuttig metadata bevatten, zoals welke groepen ze in, of ze hebben afhankelijkheden van andere testen, en als ze moeten worden genegeerd.
Slurf sorteert alle geregistreerde testen in de gewenste termijn orde construeert vervolgens een test suite die het passeert aan neus. Het kan ook deze lijst filteren, zodat het mogelijk is om aan te geven welke groepen van tests die u wilt uitvoeren zonder passeren in de exact test klassen. Tijdens runtime, zijn de tests die afhankelijk zijn van andere tests die hebben gefaald automatisch gemarkeerd als overgeslagen.
Een groot deel van deze functionaliteit is "geïnspireerd" door TestNG. Als je vanuit dat kader, de belangrijkste kenmerken proboscis momenteel aanbiedingen zijn afhankelijk aanvraaggedrag (momenteel beperkt tot de klasse-niveau) en de mogelijkheid om de tests te rangschikken in groepen onafhankelijk van de structuur van hun modules of pakketten.
Met Proboscis is het mogelijk om tests die afhankelijk zijn van een web service (of een andere afhankelijkheid u wilt maar één keer te initialiseren) schrijven als dit:
test (groepen = ["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 (zelf):
& 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 ())
Schrijf dan de code om te starten en netjes af te sluiten die webservice op een andere module als een eerste klas test zelf:
test (groepen = ["service.initialization"])
& Nbsp; & nbsp; & nbsp; klasse StartWebServer (unittest.TestCase):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def test_start (zelf):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Start webserver, geeft vervolgens een 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 (groepen = ["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 (zelf):
& 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; indien 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 ())
Met behulp van Proboscis je kunt er zeker van de tests zal uitvoeren in de gewenste volgorde, zelfs als u meer testen klassen toe te voegen, hun naam te veranderen, of verplaatsen naar verschillende modules
Eisen .
- Python
- neus
Reacties niet gevonden