denne Tutorial forklarer, hvordan Python kan bruges til Testprogrammering og viser funktionerne og sammenligningen af de øverste Python-Testrammer:
Med den udbredte anvendelse af kunstig intelligens er Python blevet et populært programmeringssprog.
denne tutorial vil dække, hvordan Python kan bruges til testprogrammering sammen med nogle Python-baserede testrammer.
lad os starte!!
= > Tjek alle Python Tutorials her.
Hvad er Python?
ifølge den traditionelle definition er Python et fortolket, højt niveau, generelt programmeringssprog, der hjælper programmører med at skrive håndterbar og logisk kode til små såvel som store projekter.
nogle af fordelene ved pythoner er:
- ingen kompilering forårsager hurtig udførelse af Edit-Test-Debug-cyklussen.
- easy debugging
- omfattende supportbibliotek
- let at lære datastruktur
- høj produktivitet
- teamsamarbejde
arbejde i Python
- tolken læser python-koden fra kildefilen og undersøger den for en syntaksfejl.
- hvis koden er fejlfri, konverterer tolken koden til den tilsvarende ‘Byte-kode’.
- denne byte-kode overføres derefter til Python Virtual Machine (PVM), hvor Byte-koden igen kompileres til fejl, hvis nogen.
Hvad er Python test?
- automatiseret test er en velkendt kontekst i testverdenen. Det er her testplanerne udføres ved hjælp af script i stedet for et menneske.Python leveres med de værktøjer og biblioteker, der understøtter automatiseret test til dit system.Python test tilfælde er forholdsvis let at skrive. Med den øgede brug af Python bliver Python-baserede testautomatiseringsrammer også populære.
liste over Python test rammer
hyret nedenfor er nogle Python test rammer, som du bør vide.
- Robot
- PyTest
- Unittest
- DocTest
- Nose2
- vidne
sammenligning af Python testværktøjer
lad os hurtigt opsummere disse rammer i en kort sammenligningstabel:
Licens | del af | Kategori | Kategori Special feature |
||
---|---|---|---|---|---|
robot |
gratis programmer (asf licens} |
python generic test libraries. | Acceptance testing | Søgeordsdrevet testmetode. | |
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. | |
vidne |
gratis programmer (ASF Licens) |
bærer unittest og næse funktioner med ekstra funktion og plugins. | unittest udvidelse | Test opdagelse enhancement. |
(forkortelser: mit = Massachusetts Institute of Technology (1980), BSD = Berkeley Distribution (1988), ASF = Apache Foundation(2004))
lad os starte!!
#1) Robot
- den mest populære Robotramme er en open source-Automatiseringstestramme baseret på Python.
- denne ramme er helt udviklet i Python og bruges til accepttest og testdrevet udvikling. Søgeordsstil bruges til at skrive testsager i Robotrammer.
- robotten er i stand til at køre Java og.net og understøtter også automatiseringstest på tværs af platforme som f. eks.
- sammen med Accepttestning bruges Robot også til Robotic Process Automation (RPA).
- Pip (Pakkeinstallationsprogram til Python) anbefales stærkt til Robotinstallation.
- brugen af tabular data syntaks, søgeord-drevet test, rige biblioteker & værktøjssæt og parallel test er nogle af de stærke funktioner i Robot, der gør det populært blandt 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 en prøve af mislykket Testudfø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 () | til proces test output. | fra robot import rebot |
Link til API: Robot ramme brugervejledning
Hent Link: Robot
#2) Pytest
- PyTest er en open source Python-baseret test rammer, der generelt er til alle formål, men især til funktionel og API-test.
- Pip (Pakkeinstallationsprogram til Python) er påkrævet til pytest-installation.
- det understøtter enkel eller kompleks tekstkode til test API, databaser og UIs.
- enkel syntaks er nyttigt for nem test udførelse.
- Rich plugins og er i stand til at køre tests parallelt.
- kan køre en bestemt delmængde af tests.
eksempel:
import pytest //Import unittest module//def test_file1_method(): //Function inside class// x=5 y=6 assert x+1 == y,"test failed"
for at køre testen skal du bruge Py.test kommando.
skærmbillede til Reference:
pakker / metoder:
funktion | parametre | arbejder |
---|---|---|
pytest.ca () | forventet, rel=None, abs=None, nan_ok=False |
hævder, at to tal eller to sæt tal er omtrent lig med nogle forskelle. |
pytest.fail () | msg (str) pytrace(bool) |
hvis den udførende test mislykkes eksplicit vises meddelelsen. |
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: Forventning | Asserting advarsel med funktionerne |
Hvis du vil have adgang til en test skrevet i en bestemt fil, bruger vi nedenstående kommando.
py.test <filename>
Pytest-armatur: Pytest-armatur bruges til at køre kode, før testmetoden udføres for at undgå gentagelse af kode. Dette bruges dybest set til at initialisere databaseforbindelse.
Du kan definere pytest armatur som vist nedenfor.
@pytest.fixture
påstand: påstand er den betingelse, der Returnerer SAND eller falsk. Testudførelse 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
Hent Link: Pytest
#3) Unittest
- Unittest er den allerførste Python-baserede automatiserede enhed test rammer, der var designet til at arbejde med Python standard bibliotek.
- understøtter genbrug af testdragter og testorganisation.
- det blev inspireret af JUnit og understøtter testautomatisering inklusive testsamlinger, testuafhængighed, opsætningskode til test osv.
- det kaldes også PyUnit.
- Unittest2 er en backport af yderligere nye funktioner tilføjet til Unittest.
standard arbejdsgang for Unittest:
- Importer Unittest-modulet i programkoden.
- du kan definere din egen klasse.
- Opret funktioner i den klasse, du har defineret.
- Placer unittest.main (), som er den vigtigste metode i bunden af koden til at køre testsagen.
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//
skærmbillede til Reference:
pakker/metoder:
metode | arbejde |
---|---|
setup() | kaldet før testmetode udførelse for at forberede test installation. |
nedrivning () | kaldes efter testmetode udførelse, selvom testen kaster en undtagelse. |
setUpClass () | kaldet efter test i en individuel klasse. |
tårnklasse () | kaldes efter test i en individuel klasse. |
Kør () | kør testen med resultater. |
debug () | kør testen uden resultat. |
addTest () | Tilføj testmetoden i testpakken. |
Discover () | finder alle testmodulerne i undermapper fra den specifikke mappe. |
assertlige(a,b) | for at teste ligestilling mellem to objekter. |
asserTrue/assertFalse(betingelse) | for at teste boolsk tilstand. |
(Bemærk: unittest.mock () er et bibliotek til Python-test, der gør det muligt at udskifte systemdele med mock-objekter. Core mock-klassen hjælper med at skabe en test suite nemt.)
Link til API: Unittest API
Hent Link: Unittest
#4) DocTest
- Doctest er et modul, der er inkluderet i Pythons standard distribution og bruges til hvid-boks enhed test.
- det søger efter interaktive python-sessioner for at kontrollere, om de fungerer nøjagtigt efter behov.
- det gør brug af selektive Python-funktioner såsom docstrings, Python interactive shell og Python introspektion (bestemmelse af egenskaber for objekter ved kørsel).
- kernefunktioner:
- opdatering af docstring
- udførelse af regressionstest
- funktionerne testfile() og testmod() bruges til at give grundlæggende interface.
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
skærmbillede til Reference:
pakker / funktioner:
Function | Parameters |
---|---|
doctest.testfile() | filename (mendatory) |
doctest.testmod() | m]
|
doctest.DocFileSuite() | *paths, |
doctest.DocTestSuite() |
Note: Til kontrol af interaktive eksempler i tekstfilen kan vi bruge testfile ()-funktionen;
doctest.testfile ("example.txt”)
Du kan køre testen direkte fra kommandolinjen med;
python factorial.py
Link til API: DocTest API
Hent Link: Doctest
#5) Næse2
- nose2 er efterfølgeren til næse, og det er en Python-baseret enhed test rammer, der kan køre doctests og UnitTests.
- Nose2 er baseret på unittest derfor er det benævnt udvide unittest eller unittest med plugin, der er designet til at gøre test enkel og lettere.
- næse bruger kollektive tests fra unittest.testcase og understøtter flere funktioner til at skrive tests og undtagelser.
- næse understøtter pakkearmaturer, klasser, moduler og kompleks initialisering, der skal defineres på et enkelt tidspunkt i stedet for at skrive ofte.
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()
skærmbillede til Reference:
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æver | (*undtagelse) | for at kaste en af de forventede undtagelser til at passere. |
næse.redskaber.timed | (limit) | for at angive den frist, inden for hvilken testen skal få et pass. |
næse.redskaber.med_setup | (opsætning=ingen, nedrivning=ingen) | for at tilføje opsætningsmetode til en testfunktion. |
næse.redskaber.intest | (func) | metode eller funktion kan betegnes som test. |
næse.redskaber.nottest | (func) | metode eller funktion kan ikke betegnes som test. |
Link til API: Plugins til Næse2
Hent Link: Næse2
#6) vidne
- vidne var designet til at erstatte unittest og næse. Vidne har mere avancerede funktioner end unittest.
- vidne er populær som en Java-implementering af semantisk test (Let at lære og implementere specifikation for programmelprøvning).
- udførelse af automatiseret enhed, Integration og systemtest er lettere at vidne.
funktioner
- enkel syntaks til armatur metode.
- improviseret testopdagelse.
- klasse-niveau opsætning og nedrivning armatur metode.
- udvideligt plugin-system.
- let at håndtere testværktøjer.
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()
skærmbillede til Reference:
pakker / metoder:
Pakkenavn | arbejde | pakke import |
---|---|---|
assert | giver omfattende testværktøjer til systemtestning. | import “github.com/stretchr/testify/assert” |
mock | nyttigt at teste dine objekter og opkald. | import “github.com/stretchr/testify/mock” |
Kræv | fungerer som det samme som at hævde, men stopper testudførelse, når test mislykkes. | import ” github.com/stretchr/vidne/Kræv” |
suite | det giver logik for at skabe test suite struktur og metoder. | import “github.com/stretchr/testify/suite” |
Link til API: pakke filer af Vidne
Hent Link: vidne
yderligere Python test rammer
hidtil har vi gennemgået de mest populære Python test rammer. Der er få flere navne på denne liste, som kan blive populære i fremtiden.
#7) Behave
- Behave kaldes BDD (Behavior Driven Development) testramme, der også bruges til test af sort boks. Behave bruger det naturlige sprog til at skrive test og arbejder med Unicode-strenge.
- Behave directory indeholder funktionsfiler, der har et almindeligt tekstformat, der ligner naturligt sprog og Python-trinimplementeringer.
Link til API: Behave brugervejledning
Hent Link: Behave
#8) salat
- salat er nyttigt for adfærd drevet udvikling test. Det gør testprocessen nem og skalerbar.
- salat indeholder trin som:
- beskriver adfærd
- trin definition i Python.
- kører koden
- ændring af kode for at bestå testen.
- kører den ændrede kode.
- disse trin følges 3 – 4 gange for at gøre programmet fejlfrit og derved forbedre dets kvalitet.
Link til API: salat dokumentation
Hent Link: salat
Ofte Stillede Spørgsmål og svar
lad os se på nogle af de mest almindelige Ofte Stillede Spørgsmål om dette emne-
spørgsmål #1) Hvorfor bruges Python til automatisering?
svar: da ‘Python leveres med de værktøjer og biblioteker, der understøtter automatiseret test til dit system’, er der flere andre grunde til, at Python bruges til test.Python er objektorienteret og funktionel, der lader programmører konkludere, om funktionen og klasserne er egnede i henhold til kravene.Python tilbyder et rigt bibliotek med nyttige pakker til test efter installation af ‘Pip’.
spørgsmål #2) Hvordan struktureres en Python-test?
Svar: Når du opretter en test i Python, skal du overveje to ting som angivet nedenfor.
- hvilket modul / del af systemet vil du teste?
- hvilken type test du vælger (uanset om enhedstest eller integrationstest)?
den overordnede struktur af Python – testen er så enkel som andre, hvor vi beslutter komponenterne i test som-input, testkode, der skal udføres, output og sammenligning af output med forventede resultater.3) hvilket automatiseringsværktøj er skrevet i Python?
svar: Buildout er et automatiseringsværktøj, der er skrevet i og udvidet med Python og bruges til automatisering af programsamling. Buildout kan anvendes på alle programfaser lige fra udvikling til implementering.
dette værktøj er baseret på 3 kerneprincipper:
- repeterbarhed: det angiver, at projektkonfiguration udviklet i det samme miljø skal give det samme resultat uanset deres historie.
- Componentisering: Programtjenesten skal omfatte selvovervågningsværktøjer og skal konfigurere overvågningssystemet under implementering af produktet.
- automatisering: implementering af programmer skal være meget automatiseret og tidsbesparende.4) kan Python bruges sammen med selen?
svar: Ja. Python sprog bruges med selen til at udføre test. Python API er nyttigt at forbinde med bro.ser gennem selen. Python Selenkombination kan bruges til at skrive funktionelle/accepttest ved hjælp af selen-chauffør.5) er selen med Python godt?
svar: der er flere grunde til, at selen og Python betragtes som en god kombination:
- selen har det stærkeste værktøjssæt til understøttelse af hurtig testautomatisering.selen tilbyder dedikerede testfunktioner til at udføre test af applikationer, der hjælper med at undersøge reel applikationsadfærd.
- mens Python er et objektbaseret og brugervenligt scriptsprog på højt niveau med en simpel søgeordsstruktur.
nu, når det kommer til at bruge selen med Python, har det flere fordele som angivet nedenfor.
- let at kode og læse.Python API er yderst nyttigt til at forbinde dig til selen.selen sender standard kommando af Python til forskellige bro.sere uanset dens design variationer.
- Python er forholdsvis enkel og kompakt end de andre programmeringssprog.Python kommer med et stort samfund til at støtte dem, der er helt nye til at bruge selen med Python til at udføre automatiseringstest.
- det er gratis og åbent programmeringssprog hele tiden.
- selen er en anden stærk grund til at bruge selen med Python. Selen driver har stærk bindende støtte til Pythons nemme brugergrænseflade.6) Hvad er foranstaltningerne til at vælge den bedste Python-testramme?
svar: For at vælge den bedste Python-testramme skal nedenstående punkter tages i betragtning:
- hvis kvaliteten og strukturen af scripts opfylder dine formål. Programmeringsskriptet skal være let at forstå/vedligeholde og fri for defekter.Programmeringsstrukturen i Python spiller en vigtig rolle i valget af testrammen, der består – attributter, udsagn, funktioner, operatører, moduler og standardbiblioteksfiler.
- hvor nemt kan du generere test og i hvilket omfang de kan genbruges?
- den metode, der er anvendt til udførelse af test/testmodul (Modulkørselsteknikker).7) Hvordan vælger jeg den bedste Python-testramme?
svar: at forstå fordelene og begrænsningerne ved hver ramme er en bedre måde at vælge den bedste Python-testramme på. Lad os udforske –
Robotramme:
fordele:
- Søgeordsdrevet testmetode hjælper med at skabe læsbare testsager på en lettere måde.
- flere API ‘ er
- nem testdatasyntaks
- understøtter parallel test via Selengitter.
Begrænsninger:
- oprettelse af tilpassede HTML-rapporter er ret vanskelig med Robot.
- mindre støtte til parallel test.
- det kræver Python 2.7.14 og derover.
Pytest:
fordele:
- understøtter kompakt test suite.
- Intet behov for debugger eller nogen eksplicit test log.
- flere armaturer
- udvidelige plugins
- nem og enkel testoprettelse.
- muligt at oprette testcases med færre fejl.
Begrænsninger:
- ikke kompatibel med andre rammer.
Unittest:
fordele:
- Intet behov for yderligere modul.
- let at lære for testere på begynderniveau.
- enkel og nem test udførelse.
- hurtig testrapport generation.
Begrænsninger
- snake_case navngivning af Python og camelCase navngivning af JUnit forårsage en smule forvirring.
- uklar hensigt med testkoden.
- kræver en enorm mængde kedelpladekode.
Doctest:
fordele:
- en god mulighed for at udføre små tests.
- Testdokumentation inden for metoden giver også yderligere oplysninger om, hvordan metoden fungerer.
Begrænsninger
- det sammenligner kun det udskrevne output. Enhver variation i output vil forårsage en testfejl.
næse 2:
fordele:
- næse 2 understøtter mere testkonfiguration end unittest.
- det indeholder et betydeligt sæt aktive plugins.
- forskellige API fra unittest, der giver flere oplysninger om fejlen.
Begrænsninger:
- under installation af tredjeparts plugins skal du installere setup tool/distribuer package, da Nose2 understøtter Python 3, men ikke tredjeparts plugins.
vidne:
fordele:
- let at forstå og bruge.
- enhed, Integration og systemtest kan nemt oprettes.
- håndterbare og genanvendelige testkomponenter.
- tilføjelse af nye funktioner til Vidneer let.
Begrænsninger:
- oprindeligt vidne blev udviklet til at erstatte unittest og næse, men processen med at overføre den til pytest er tændt, så det anbefales, at brugerne undgår at bruge vidne til få kommende projekter.
Behave rammer:
fordele:
- nem udførelse af alle typer testsager.
- detaljeret begrundelse & tænkning
- klarhed af kvalitet/Dev output.
Begrænsninger:
- det understøtter kun test af sort boks.
salat rammer:
fordele:
- simpelt sprog til at oprette flere testscenarier.
- nyttigt til adfærdsdrevne testsager til test af sort boks.
Begrænsninger:
- det har stærkt brug for stærk koordinering blandt udviklere, testere& interessenter.
Du kan vælge den bedst egnede Python-testramme ved at overveje ovenstående fordele og begrænsninger, der hjælper med at udvikle de kriterier, der passer til dine forretningsbehov.8) hvilken ramme er bedst til Python-automatisering?
svar: Mens vi overvejer fordelene og begrænsningerne, kan vi betragte testtypen som en af foranstaltningerne til valg af bedste testramme:
- funktionel test: Robot, PyTest, Unittest
- Behavior-Driven Testing: Behave, salat
Robot er den bedste ramme for dem, der er nye til Python-test og ønsker at få en solid start.
konklusion
underenhed, forsøg, Testressourcer, Sancho, Testtools er nogle flere navne tilføjet på listen over Python-Testrammer. Der er dog kun få værktøjer, der er blevet populariseret, så vidt Python-test er et forholdsvis nyt koncept, der introduceres i testverdenen.
virksomheder arbejder på at gøre disse værktøjer bedre, så de er lette at forstå og udføre test. Med de rige og præcise klasse inventar, plugins og pakker disse værktøjer kan blive velbevandret og foretrække for at udføre Python test.
i mellemtiden leverer rammer, der er nævnt ovenfor fra unittest til at vidne, meget nødvendig support og service for at opnå den tilsigtede systemydelse.
=>> Contact us to suggest a listing here.