Denne Opplæringen Forklarer Hvordan Python Kan Brukes Til Testprogrammering og Viser Funksjonene og Sammenligningen av De Beste Python Testing Rammeverk:
Med den utbredte anvendelsen Av Kunstig Intelligens, Har Python blitt et populært programmeringsspråk.denne opplæringen vil dekke Hvordan Python kan brukes til testprogrammering sammen med Noen Python-baserte testrammer.
La oss starte!!
= > Sjekk Alle Python Tutorials her.
Hva Er Python?
I Henhold til den tradisjonelle definisjonen Er Python et tolket, høyt nivå, generelt programmeringsspråk som hjelper programmerere til å skrive håndterlig og logisk kode for små så vel som store prosjekter.
Noen av fordelene Med Pythons er:
- Ingen kompilering forårsaker rask utførelse Av Edit-Test-Debug-syklusen.
- Enkel feilsøking
- Omfattende støttebibliotek
- Lett å lære datastruktur
- Høy produktivitet
- teamsamarbeid
Arbeide I Python
- tolken leser python-koden fra kildefilen og undersøker den for en syntaksfeil.
- hvis koden er feilfri, konverterer tolken koden til Den tilsvarende ‘Byte code’.
- denne byte-koden overføres deretter Til Python Virtual Machine (PVM) hvor Byte-koden igjen kompileres for feil hvis noen.
Hva Er Python Testing?
- Automatisert testing er en velkjent kontekst i testverdenen. Det er der testplanene blir utført ved hjelp av skript i stedet for et menneske.Python kommer med verktøy og biblioteker som støtter automatisert testing for systemet ditt.
- Python Test tilfeller er relativt enkle å skrive. Med økt Bruk Av Python Blir Python-baserte testautomatiseringsrammer også populære.
Liste Over Python Testing Rammeverk
Enlisted nedenfor er Noen Python Testing rammeverk som du bør vite.
- Robot
- PyTest
- DocTest
- Nose2
- Testify
Sammenligning Av Python Testverktøy
la oss raskt oppsummere disse rammene i en kort sammenligningstabell:
Lisens | Del av | Kategori | ||
---|---|---|---|---|
robot |
gratis programvare (Asf-Lisens} |
python generiske testbiblioteker. | Aksept testing | Søkeord-drevet testing tilnærming. |
PyTest |
Free software (MIT License) | Stand alone, allows compact test suites. | Unit Testing | Special and simple class fixture for making testing easier. |
unittest |
Free software (MIT License) | Part of Python standard library. | Unit Testing | Fast test collection and flexible test execution. |
DocTest |
Free software (MIT License) | Part of Python standard library. | Unit Testing | Python Interactive Shell for the command prompt and inclusive application. |
Nose2 |
Free software (BSD License) |
Carries unittest features with additional feature and plugins. | unittest extension | A large number of plugins. |
Testify |
Fri programvare (ASF Lisens) |
Bærer unittest og nese funksjoner med ekstra funksjon og plugins. | test oppdagelse ekstrautstyr. |
(Forkortelser: Mit = Massachusetts Institute Of Technology (1980), BSD = Berkeley Software Distribution (1988), ASF = Apache Software Foundation(2004))
La oss starte!!
#1) Robot
- Den mest populære Robot Rammeverk er en åpen kildekode Automatisering Testing rammeverk basert På Python.
- dette rammeverket er helt utviklet I Python og brukes For Aksept Testing og Test-drevet utvikling. Søkeord stil blir brukt til å skrive testtilfeller I Robot rammeverk.
- Roboten er i stand Til å kjøre Java Og. Net og støtter også automatiseringstesting på tvers av plattformer Som Windows, Mac OS og Linux for stasjonære applikasjoner, mobile applikasjoner, webapplikasjoner, etc.
- Sammen Med Aksept Testing, Robot er også brukt For Robotic Process Automation (RPA).
- Pip (Package Installer For Python) er sterkt anbefalt For Robot installasjon.bruken av tabelldatasyntaks, søkeorddrevet testing, rike biblioteker & verktøysett og parallell testing er noen av De sterke egenskapene Til Robot som gjør Det populært blant testere.
Eksempel:
*** Settings ***Library SeleniumLibrary*** Variables ***${SERVER} localhost:7272${BROWSER} Firefox${DELAY} 0${VALID USER} demo${VALID PASSWORD} mode${LOGIN URL} http://${SERVER}/${WELCOME URL} http://${SERVER}/welcome.html${ERROR URL} http://${SERVER}/error.html*** Keywords ***Open Browser To Login Page Open Browser ${LOGIN URL} ${BROWSER} Maximize Browser Window Set Selenium Speed ${DELAY}Login Page Should Be Open Title Should Be Login PageGo To Login Page Go To ${LOGIN URL} Login Page Should Be OpenInput Username ${username} Input Text username_field ${username}Input Password ${password} Input Text password_field ${password}Submit Credentials Click Button login_buttonWelcome Page Should Be Open Location Should Be ${WELCOME URL} Title Should Be Welcome Page
her er et eksempel På Mislykket Testutførelse.
Here is a sample of Successful Test Execution.
Packages/Methods:
Package Name | Working | Package Import |
---|---|---|
run() | To run tests. | from robot import run |
run_cli() | To run tests with command line argument. | fra robot import run_cli |
rebot () | for å behandle testutgang. | fra robot import rebot |
Link TIL API: Robot Rammeverk Brukerhåndbok
Last Ned Link: Robot
#2) PyTest
- PyTest er en Åpen Kildekode Python-basert testing rammeverk som generelt er allsidig, men spesielt for funksjonell og api-testing.
- Pip (Package Installer For Python) er nødvendig For pytest installasjon.Den støtter enkel eller kompleks tekstkode for å teste API, databaser og UIs.Enkel syntaks er nyttig for enkel testutførelse.
- Rik plugins og er i stand til å kjøre tester parallelt.
- kan kjøre en bestemt delmengde av tester.
Eksempel:
import pytest //Import unittest module//def test_file1_method(): //Function inside class// x=5 y=6 assert x+1 == y,"test failed"
for å kjøre testen, bruk py.test kommando.
Skjermbilde For Referanse:
Pakker/Metoder:
Funksjon | Parametere | Arbeider |
---|---|---|
pytest.ca () | forventet, rel=Ingen, abs=Ingen, nan_ok=False |
Hevder at to tall eller to sett med tall er omtrent lik noen forskjeller . |
pytest.feil () | msg (str) pytrace (bool) |
hvis den utførende testen mislykkes eksplisitt, vises meldingen. |
pytest.skip() | allow_module_level(bool) | Skip the executing test with the message shown. |
pytest.exit() | msg (str) returncode (int) |
Exit testing process. |
pytest.main() | args=None plugins=None |
Return exit code once in-process test execution is done. |
pytest.raises() | expected_exception: Expectation | Assert that a code block call raises expected_exception or to raise a failure exception |
pytest.warns() | expected_warning: Advarsel med funksjonene |
hvis du vil ha tilgang til en test skrevet i en bestemt fil, bruker vi kommandoen nedenfor.
py.test <filename>
Pytest Fixture: Pytest Fixture brukes til å kjøre kode før du utfører testmetoden for å unngå koderepetisjon. Dette brukes i utgangspunktet til å initialisere databasetilkobling.
du kan definere PyTest fixture som vist nedenfor.
@pytest.fixture
Påstand: Påstand er betingelsen som returnerer sann eller usann. Testutførelsen stopper når påstanden mislykkes.
Nedenfor Er Et Eksempel:
def test_string_equal():assert double(55) == 62assert 25 == 62+ where 25 = double(55)
Link TIL API: Pytest API
Last Ned Link: Pytest
#3) Unittest
- Unittest Er den aller Første Python-baserte automatisert enhet test rammeverk som ble utviklet for å fungere med Python standard bibliotek.
- Støtter gjenbruk av testdrakter og testorganisasjon.Den ble inspirert Av JUnit og støtter testautomatisering, inkludert testsamlinger, test uavhengighet, setup kode for tester, etc.
- Det blir også kalt Som PyUnit.
- Unittest2 Er en backport av flere nye funksjoner lagt Til Unittest.
Standard arbeidsflyt For Unittest:
- Importer unittest-modulen i programkoden.
- du kan definere din egen klasse.
- Opprett funksjoner i Klassen du har definert.
- Sted unittest.main () som er hovedmetoden nederst i koden for å kjøre testsaken.
Eksempel:
import unittest //Import unittest module//def add(x,y): return x + yclass Test(unittest.TestCase): //Define your class with testcase// def addition(self): self.assertEquals(add(4,5),9)<strong>//Function inside class//if __name__ == '__main__': unittest.main()<strong>//Insert main() method//
Skjermbilde for Referanse:
Pakker / Metoder:
Metode | Arbeider |
---|---|
setup () | kalt før testmetode utførelse for å forberede testinstallasjon. |
tearDown () | Kalt etter testmetodeutførelse selv om testen kaster et unntak. |
setUpClass () | Kalt etter tester i en individuell klasse. |
tearDownClass () | Kalt etter tester i en individuell klasse. |
kjør () | Kjør testen med resultater. |
debug () | Kjør testen uten resultat. |
addTest () | Legg til testmetoden i testpakken. |
Discover () | Finner alle testmodulene I underkataloger fra den spesifikke katalogen. |
assertEqual(a,b) | for å teste likestilling av to objekt. |
asserTrue/assertFalse(tilstand) | for å teste Boolsk tilstand. |
(Merk: enhetstest.mock () er et bibliotek For Python testing som lar erstatte systemdeler med mock objekter. Kjernen mock klassen bidrar til å lage en test suite enkelt.)
Link TIL API: Unittest API
Last Ned Link: Unittest
#4) DocTest
- Doctest Er en modul som er inkludert I Pythons standard distribusjon og brukes For White-box Enhet Testing.
- den søker etter interaktive python-økter for å sjekke om de jobber akkurat som nødvendig.
- Det gjør bruk av selektive Python evner som docstrings, Python interactive shell og Python introspection (bestemme egenskapene til objekter under kjøring).
- Kjernefunksjoner:
- Oppdatere docstring
- Utføre Regresjonstesting
- funksjonene testfile() og testmod () brukes til å gi grunnleggende grensesnitt.
Eksempel:
def test(n): import math if not n >= 0: raise ValueError("n must be >= 0") //number should be 0 or greater than 0 if math.floor(n) != n: raise ValueError("n must be exact integer") //Error when number is not an integer if n+1 == n: raise OverflowError("n too large") //Error when number is too large r = 1 f = 2 while f <= n: //Calculate factorial r *= f f += 1 return rif __name__ == "__main__": import doctest //Import doctest doctest.testmod() //Calling the testmod method
Skjermbilde for Referanse:
Pakker/Funksjoner:
Function | Parameters |
---|---|
doctest.testfile() | filename (mendatory) |
doctest.testmod() | m]
|
doctest.DocFileSuite() | *paths, |
doctest.DocTestSuite() |
Note: For å sjekke interaktive eksempler i tekstfilen kan vi bruke testfile ()-funksjonen;
doctest.testfile ("example.txt”)
du kan direkte kjøre testen fra kommandolinjen med;
python factorial.py
LINK TIL API: DocTest API
Last Ned Link: Doctest
#5) Nose2
l nose2 er etterfølgeren til nose, og det er en python-basert enhet testing rammeverk som kan kjøre doctests og unittests.Nose2 er basert på unittest derfor er det referert til som extend unittest eller unittest med plugin som er designet for å gjøre testing enkel og enklere.
Eksempel:
from mynum import *import nosedef test_add_integers(): assert add(5, 3) == 8def test_add_floats(): assert add(1.5, 2.5) == 4def test_add_strings(): nose.tools.assert_raises(AssertionError, add, 'paul', 'carol') // To throw one of the expected exception to passif __name__ == '__main__': nose.run()
Skjermbilde for Referanse:
Pakker / Metoder:
Method | Parameters | Working |
---|---|---|
nose.tools.ok_ | (expr, msg = None) | Shortcut to assert. |
nose.tools.ok_ | (a,b, msg = None) | Shortcut to ‘assert a==b, «%r != %r” % (a, b) |
nose.tools.make_decorator | (func) | To replicate metadata for the given function. |
nose.tools.høyninger | (*unntak) | å kaste en av de forventede unntakene å passere. |
nese.verktøy.tidsbestemt | (limit) | for å angi tidsgrensen der testen skal få et pass. |
nese.verktøy.with_setup | (oppsett=Ingen, teardown=Ingen) | for å legge til oppsettmetode i en testfunksjon. |
nese.verktøy.intest | (func) | Metode eller funksjon kan refereres som test. |
nese.verktøy.nottest | (func) | Metode eller funksjon kan ikke refereres som test. |
Link TIL API: Plugins For Nose2
Last Ned Link: Nose2
#6) Testify
- Testify er designet for å erstatte enhetstest og nese. Vitne har mer avanserte funksjoner over unittest.Testify Er populær Som En Java implementering av semantisk testing (Lett å lære og implementere programvare testing spesifikasjon).
- Utføre Automatisert enhet, Integrasjon Og Systemtesting er lettere Å Vitne.
Funksjoner
- Enkel syntaks til ligaen metode.
- Improvisert test funn.
- Klassenivå oppsett og teardown fixture metode.
- Utvidbart plugin system.
- Lett å håndtere testing verktøy.
Eksempel:
from testify import *class AdditionTestCase(TestCase): @class_setup def init_the_variable(self): self.variable = 0 @setup def increment_the_variable(self): self.variable += 1 def test_the_variable(self): assert_equal(self.variable, 1) @suite('disabled', reason='ticket #123, not equal to 2 places') def test_broken(self): # raises 'AssertionError: 1 !~= 1.01' assert_almost_equal(1, 1.01, threshold=2) @teardown def decrement_the_variable(self): self.variable -= 1 @class_teardown def get_rid_of_the_variable(self): self.variable = Noneif __name__ == "__main__":run()
Skjermbilde for Referanse:
Pakker / Metoder:
Pakkenavn | Arbeider | pakkeimport |
---|---|---|
assert | gir omfattende testverktøy for systemtesting. | import «github.com/stretchr/testify/assert» |
mock | Nyttig å teste dine objekter og samtaler. | import «github.com/stretchr/testify/mock» |
require | Fungerer som det Samme som å hevde, men stopper testutførelse når tester mislykkes. | importer » github.com / stretchr/testify/require» |
suite | det gir logikk for å lage testing suite struktur og metoder. | import «github.com/stretchr/testify/suite» |
Link TIL API: Pakke filer Av Vitne
Last Ned Link: Vitne
Ekstra Python Testing Rammeverk
Så langt har Vi gjennomgått den mest populære Python Testing Rammeverk. Det er få flere navn på denne listen som kan bli populære i fremtiden.#7) Behave
- Behave er REFERERT TIL SOM Bdd (Behavior Driven Development) test rammeverk som også brukes For Svart boks testing. Behave bruker det naturlige språket for å skrive tester og arbeider med Unicode-Strenger.Behave-katalogen inneholder funksjonsfiler som har et rent tekstformat som ser ut som naturlig språk og Python-trinnimplementeringer.
Link TIL API: Behave Brukerhåndbok
Last Ned Link: Behave
#8) Salat
- Salat er nyttig For Atferd Drevet Utvikling Testing. Det gjør testprosessen enkel og skalerbar.
- Salat inneholder trinn som:
- Beskriver atferd
- Trinn definisjon I Python.
- Kjører koden
- Endre kode for å bestå testen.
- Kjører den endrede koden.
- disse trinnene blir fulgt i 3-4 ganger for å gjøre programvaren feilfri og dermed forbedre kvaliteten.
Link TIL API: Salat Dokumentasjon
Last Ned Link: Salat
Ofte Stilte Spørsmål og Svar
La oss ta en titt på noen av de vanligste Vanlige Spørsmål om dette emnet –
Q #1) Hvorfor Brukes Python til automatisering?
Svar: Siden Python kommer med verktøyene og bibliotekene som støtter automatisert testing for systemet ditt, er Det flere andre grunner til At Python brukes til testing.
- Python er objektorientert og funksjonell som lar programmerere konkludere om funksjonen og klasser er egnet som per kravene.
- Python tilbyr et rikt bibliotek av nyttige pakker for testing etter installasjon ‘Pip’.
- Statsløse funksjoner og enkel syntaks er nyttige for å lage lesbare tester.
- Python spiller rollen som broen mellom testsaken og testkoden.
- Python støtter dynamisk duck skrive.
- Tilbyr godt konfigurert IDE og god støtte TIL bdd-rammen.
- Rich kommandolinjestøtte er nyttig for å utføre en manuell sjekk.Enkel og god struktur, modularitet, rikt verktøysett og pakker kan være nyttig for skalautvikling.
Q #2) hvordan strukturere En Python test?
Svar: når du lager en test I Python, bør du vurdere to ting som angitt nedenfor.
- hvilken modul / del av systemet du vil teste?
- Hvilken type testing velger du (enten enhetstesting eller integrasjonstesting)?Den generelle strukturen I Python-Testen er like enkel som andre hvor vi bestemmer komponentene i tester som-innganger, testkode som skal utføres, utdata og sammenligning av utdata med forventede resultater.
Q #3) Hvilket automatiseringsverktøy er skrevet I Python?Svar: Buildout Er et automatiseringsverktøy som er skrevet inn og utvidet Med Python og brukes til å automatisere programvaresamling. Buildout kan gjelde for alle programvarefaser helt fra utvikling til distribusjon.
dette verktøyet er basert på 3 kjerneprinsipper:
- Repeterbarhet: det sier prosjektkonfigurasjon utviklet i samme miljø skal gi samme resultat uavhengig av deres historie.
- Componentization: Programvaretjenesten bør inkludere selvovervåkingsverktøy og bør konfigurere overvåkingssystemet under produktdistribusjon.
- Automatisering: programvaredistribusjon bør være svært automatisert og tidsbesparende.
Q #4) Kan Python brukes Med Selen?
Svar: Ja. Python språk brukes Med Selen for å utføre testing. Python API er nyttig for å koble til nettleseren gjennom Selen. Python Selen kombinasjon kan brukes til å skrive funksjonelle / aksept tester ved Hjelp Av Selen WebDriver.
Q #5) Er Selen Med Python bra?
Svar: Det er flere grunner Til At Selen og Python anses som en god kombinasjon:
- Selen har det sterkeste verktøysettet for å støtte rask testautomatisering.Selen Tilbyr Dedikerte testfunksjoner for å utføre webapplikasjonstesting som bidrar til å undersøke ekte applikasjonsadferd.
- Mens Python er et høyt nivå, objektbasert og brukervennlig skriptspråk med en enkel søkeordstruktur.
Nå, når det gjelder Å bruke Selen Med Python, har det flere fordeler som angitt nedenfor.
- Lett å kode og lese.
- Python API er svært nyttig å koble deg til nettleseren Gjennom Selen.Selen sender standard kommando Av Python til ulike nettlesere uavhengig av designvariasjoner.
- Python er relativt enkelt og kompakt enn de andre programmeringsspråkene.Python kommer med et stort fellesskap for å støtte de som er helt nye For Å bruke Selen Med Python til å utføre automatiseringstesting.
- det er gratis og åpent programmeringsspråk hele tiden.
- Selen WebDriver er en annen sterk grunn til Å bruke Selen Med Python. Selen WebDriver har sterk bindende støtte For Pythons enkle brukergrensesnitt.
Q #6) Hva er tiltakene for å velge det beste Python-testrammen?
Svar: For å velge det beste Python-testrammen, bør punktene nedenfor tas i betraktning:
- Hvis kvaliteten Og strukturen til skriptene oppfyller dine formål. Programmeringsskriptet skal være lett å forstå/vedlikeholde og fri for feil.Programmerings strukturen I Python spiller en viktig rolle i å velge testing rammeverk som består-Attributter – uttalelser, funksjoner, operatører, moduler og standard bibliotekfiler.
- Hvor enkelt kan du generere tester og i hvilken grad de kan gjenbrukes?
- metoden vedtatt for test / testmodulutførelse (Modulløpsteknikker).
Q # 7) hvordan velge Den beste Python Testing rammeverk?Svar: Å Forstå fordelene og begrensningene til hvert rammeverk er en bedre måte å velge Det beste Python-Testrammen på. La oss utforske –
Robot Rammeverk:
Fordeler:
- Søkeord-drevet test tilnærming bidrar til å skape lesbare testtilfeller på en enklere måte.
- Flere Apier
- Enkel test data syntaks
- Støtter parallell testing via Selen Rutenett.
Begrensninger:
- Å Lage tilpassede HTML-rapporter er ganske vanskelig med Robot.
- Mindre støtte til parallell testing.
- Det krever Python 2.7.14 og nyere.
Pytest:
Fordeler:
- Støtter kompakt test suite.
- Ingen behov for debugger eller noen eksplisitt testlogg.
- Flere inventar
- Utvidbare plugins
- Enkel og enkel test skapelse.
- Mulig å lage testtilfeller med færre bugs.
Begrensninger:
- ikke kompatibel med andre rammer.
Unittest:
Fordeler:
- Ingen behov for noen ekstra modul.
- Lett å lære for testere på nybegynnernivå.
- Enkel og lett testutførelse.
- rask test rapport generasjon.
Begrensninger
- snake_case navngiving Av Python og camelCase navngiving Av JUnit forårsake litt forvirring.
- Uklar hensikt med testkoden.
- Krever en stor mengde standardtekstkode.
Doctest:
Fordeler:
- et godt alternativ for å utføre små tester.
- Testdokumentasjon i metoden gir også ytterligere informasjon om hvordan metoden fungerer.
Begrensninger
- den sammenligner bare utskriften. Enhver variasjon i utgangen vil føre til en testfeil.Nese 2:
Fordeler:
- Nese 2 støtter mer testing konfigurasjon enn unittest.
- den inneholder et betydelig sett med aktive plugins.
- Forskjellig API fra unittest som gir mer informasjon om feilen.
Begrensninger:
- mens du installerer tredjeparts plugins må du installere setup tool / distribuere pakken, Som Nose2 støtter Python 3, men ikke tredjeparts plugins.
Testify:
Fordeler:
- Lett å forstå og bruke.
- Enhet, Integrasjon og Systemtester kan enkelt opprettes.
- Håndterbare og gjenbrukbare testkomponenter.
- Legge til nye funksjoner For Å Testifyer enkelt.
Begrensninger:I Utgangspunktet Testify ble utviklet for å erstatte unittest og Nose, men prosessen med å transitere den til pytest er på, så det anbefales at brukerne unngår Å bruke Testify for få kommende prosjekter.Behave Framework:
Fordeler:
- Enkel utførelse av alle typer testtilfeller.
- Detaljert resonnement& tenkning
- Klarhet I qa/Dev utgang.
Begrensninger:
- den støtter bare svart boks testing.
Salat Rammeverk:
Fordeler:
- Enkelt språk for å opprette flere testscenarier.
- Nyttig for atferdsdrevne testtilfeller for black-box testing.
Begrensninger:
- Det trenger sterkt sterk koordinering blant utviklere, testere & interessenter.
Du kan velge Den Best egnede Python testing rammeverk ved å vurdere de ovennevnte fordeler og begrensninger som vil bidra til å utvikle kriteriene som passer for dine forretningsbehov.
Q # 8) Hvilket rammeverk er best for Python-Automatisering?
Svar: Mens vi vurderer fordelene og begrensningene, kan vi vurdere testtypen som en av tiltakene for å velge best testing framework: Funksjonell Testing: Robot, PyTest, Unittest
Atferdsdrevet Testing: Oppføre Seg, Salat
Robot Er det beste rammeverket for de som er nye Til Python testing og ønsker å få en solid start.
Konklusjon
Underenhet, Trial, Test resources, Sancho, Testtools er noen flere navn lagt til i listen Over Python Testing Framework. Det er imidlertid bare noen få verktøy som har blitt popularisert så langt Som Python testing er et relativt nytt konsept som er introdusert i testverdenen.
Bedrifter jobber med å gjøre disse verktøyene bedre slik at de er enkle å forstå og utføre testing. Med de rike og presise klasse inventar, plugins og pakker disse verktøyene kan bli godt bevandret og foretrekke for å utføre Python Testing.
i Mellomtiden gir rammer nevnt ovenfor fra unittest To Testify mye nødvendig støtte og service for å oppnå den tiltenkte systemytelsen.