snabel er en Nose utvidelse som muliggjør høyere nivå testing.
Endringer hvordan test klasser er oppdaget ved å tvinge dem til å registrere seg via dekoratører som inneholder nyttig metadata som hvilke grupper de er i, om ikke de har avhengigheter på andre tester, og hvis de skulle bli ignorert.
Snabel sorterer alle registrerte tester i ønsket løp for deretter konstruerer en testsuite som det går til Nose. Det kan også filtrere denne listen slik at det er mulig å spesifisere hvilke grupper av testene du ønsker å kjøre uten å passere i de nøyaktige testklassene. Under kjøring, er tester som er avhengig av andre tester som har mislyktes automatisk merket som hoppet.
Mye av denne funksjonaliteten ble "inspirert" av TestNG. Hvis du kommer fra dette rammeverket, hovedtrekkene snabel tiden tilbudene er avhengige test bestilling (foreløpig begrenset til klassenivå) og evnen til å ordne tester i grupper uavhengig av strukturen av sine moduler eller pakker.
Med snabel er det mulig å skrive tester som er avhengig av en web-tjeneste (eller noen annen avhengighet du ønsker å bare initial gang) som dette:
test (grupper = ["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 (egen-):
& 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 ())
Deretter skrive kode for å starte og renslig nedstengt at webtjeneste på annen modul som en førsteklasses test selv:
test (grupper = ["service.initialization"])
& Nbsp; & nbsp; & nbsp; klasse StartWebServer (unittest.TestCase):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def test_start (egen-):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Start web server, utsteder så en 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; klient = 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 (grupper = ["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 (egen-):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; klient = mymodule.ServiceClient (service_config)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; hvis 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 ())
Ved hjelp av snabel du kan være trygg på testene vil utføre i ønsket rekkefølge selv om du legger flere test klasser, endre deres navn, eller flytte dem til forskjellige moduler
Krav .
- Python
- nese
Kommentarer ikke funnet