Ndibanisa iiprojekthi ye-Python test automation ngexesha elide ukufumana iingcebiso kunye neengcebiso zokufumana iimiphumo ezilungileyo. Ngaba ndibhalisa iingcebiso kunye neengcebiso ezinokufumaneka kwi-Python test automation efanelekileyo.
1. Khetha i-test automation framework efanelekileyo kwi-project specifications yakho.
1. Khetha i-test automation framework efanelekileyo ngokuxhomekeke kwizicelo zakho zeprojekthi.I-Python ifumaneka kunye ne-test automation framework eyongezelelweyo, i-Unittest. Kodwa iyona engcono kwiiprojekthi ezincinane. Ukuba ufuna i-test automation framework ebonakalayo ukusebenza kwiiprojekthi ezincinane ukuya kwiiprojekthi ezininzi, i-Pytest yindlela elungileyo.
I-Pytest inikeza indlela efanelekileyo kwaye efanelekileyo yokubhala iingxaki ze-test ye-automation ye-test ye-managed and scalable. Kwakhona i-syntax elula kunye ne-plugin ecosystem epheleleyo. Umzekelo, unako ukusebenzisa i-pytest-xdist yokusebenza kweengxaki ze-parallel. Ukongezelela, unako ukuqhuba iingxaki ze-test eyenziwa kwi-Unittest okanye i-Nose 2 kwi-Pytest.
Ukuba ungenza iinkqubo ezininzi ze-robot (
Ukuba uqhagamshelane neqela le-Behavior-Driven Development (BDD), i-Behave yinkqubo engcono kakhulu. Ukubhalisa iingxaki zofuzo kwi-Behave ezinokufuneka kubathengi abavela kwi-non-technical.
Ndinga ukhethe i-framework enokuxhomekeke ne-tech stack esetyenziswa kwikhompyutha yakho ukuze ukunceda nayiphi na iingxaki ze-communication. Kodwa ukuba usebenza solo, i-Pytest iyona i-framework eyenziwe kakhulu kwaye isetyenziselwa kakhulu.
2. Ukusebenzisa i-WebDriverWait kwi-Selenium ukufumana iingxaki ze-timing.
Ndiye ndicinga ukuba unokufumaneka i-Pytest kunye ne-Selenium kwi-web testing. Nangona i-Pytest iyona kakhulu kwi-functional testing, i-Selenium ithatha i-web automation kwinqanaba entsha ngokupheleleyo. I-Selenium ine-browser automation enamandla, ikakhulukazi ne-WebDriver library yayo.
Ukuba usebenze iimvavanyo kwi-Selenium, kufuneka uxhomeke ixesha elidlulileyo njengoko i-system isebenza kwiimveliso ze-locating. Emva kokuba ixesha elidlulileyo, ngathi iiyure ze-10, i-driver isakhula. I-impulsive wait, njengoko ithiwa, yinto ukuba iimveliso ezahlukeneyo zinokufuneka iiyure ezahlukeneyo.
Kusetyenziswa ngexesha elidlulileyo, usebenzisa i-WebDriverWait kunye ne-expected_conditions ukuvelisa iimeko ezithile ezidlulileyo ngaphambi kokufumana iimveliso ze-interactive.
from selenium import webdriver from Selenium.webdriver.common.by import By from Selenium.webdriver.support.ui import WebDriverWait from Selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("https://example.com") # Wait for the element to be clickable wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID, "clickableElementId"))) element.click() # Yenza umsebenzi emva kokufumana umgca umgca umgca.from selenium import webdriver from Selenium.webdriver.common.by import By from Selenium.webdriver.support.ui import WebDriverWait from Selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("https://example.com") # Wait for the element to be clickable wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID, "clickableElementId"))) element.click() # Yenza umsebenzi emva kokuba i-element is ready driver.()
Ukuba izifundo zakho ziyafumaneka ngokuzenzakalelayo, kungekho kufuneka kuxhomekeke ukuba le app yewebhu unemibuzo. Oku kunokwenzeka nje ngenxa emibuzo emibuzo ye-app okanye i-UI. Ukunciphisa i-debugging emibuzo emibuzo, qinisekisa ukuba usebenzisa i-ID ezizodwa ukuyifumana iimveliso zewebhu ngokukhawuleza.
3. Ukusetyenziswa kwePytest i-parameterized testing ukuze ukunceda ukutshintshwa kwe-test functions.
Ndiye akwazi ukucacisa ixesha efanelekileyo iimfuneko ze-Pytest ze-parameterized testing. I-Test Automation ingaba kuxhomekeke ukucacisa i-functionality efanayo kwi-app ngeengxaki ze-data ezahlukileyo. Ngaphandle kokubili iimfuneko ze-test, unokufumana nje isebenze isebenze esisodwa usebenzisa i pytest.mark.parametrize
, kwaye ithatha isebenze ezininzi kwiiparametres ezahlukileyo. Ndiyathanda oku:
pytest.mark.parametrize
Ukuqhagamshelana nathi
Ukuhambisa iinkcukacha
@pytest.mark.parametrize("input, kufuneka", [(2, 4), (3, 9), (4, 16)])
@pytest.mark.parametrize("input, kufuneka", [(2, 4), (3, 9), (4, 16)]
def test_square(umgangatho, ukufikelela):
def test_square(umgangatho, ukufikelela):
I-assert input ** 2 == ekubeni
I-assert input ** 2 == ekubeni
Ukuba unemibuzo ukuba unako ukuqhuba i-parameterized testing nge-Python ye-test automation framework, impendulo yinto ye-yes-kuquka iimeko ezithile. I-Unittest ayikwazi ukunceda i-parameterized testing, kodwa unako ukongeza i-module yayo. Nazi indlela yokwenza oku:
imveliso imiqondiso
imveliso unitest
from imveliso parameterized imveliso parameterized
from imveliso parameterized parameterized
umgangatho weTestMathOperations(unittest.TestCase):
umgangatho weTestMathOperations(unittest.TestCase):
< Br > @yobugcisa.exe([
@imveliso.inkxaso(
("ukwakheka kwe-2", 2, 4),
("ukwalithi ye-2", 2, 4),
("ukwakheka kwe-3", 3, 9),
("i-3", 3, 9),
("ukwakheka kwe-4", 4, 16),
("ukwalithi ye-4", 4, 16),
]
]
def test_square(ngoku, igama, inguqulelo, ukufikelela):
def test_square(ngoku, igama, inguqulelo, ukufikelela):
self.assertEqual(input ** 2, kufuneka)
self.assertEqual(input ** 2, kufuneka)
4. Ukukhuthaza ukuqhuba kwe-test nge-parallel testing.
I-API, i-test case, i-databases, kunye ne-third-party systems ezininzi kwi-test suite yakho, i-execution lags kakhulu, nto leyo inokukwazi ukucacisa ukuvelisa. Ngakumbi, kukho indlela yokufumana oku ngaphandle kokuphumelela kwi-test suite yakho. I-Python ibonelela ukuvelisa ngokuhambelana ne-frameworks efana ne-Pytest. Ungasebenzisa i-CPU ezininzi ukuvelisa izifundo ezininzi ngokuhambelana.
Kukho indlela yokusebenza kwe-parallel testing nge-Pytest:
i-pip install isixeko-xdist
i-pip install ye-pipest-xdist
pytest -n 4 # Ukulungiselela iiyure ze-4 ze-CPU
pytest -n 4 # Ukuvula izifundo kwi-4 CPU
Ukuba unako ukwandisa inani le-CPU ekusebenziseni ukubheja, kodwa kunokuba i-infrastructure ye-local ezininzi ekusebenziseni. Ukuba i-CPU yakho engabonakali kakhulu ekusebenziseni i-test suite yakho, nceda usebenzise i-cloud platforms efana ne-Lambda ukuvavanya indlela yokusebenza kwe-app kwiifayile ezahlukeneyo kunye ne-OS.
ngathi 5. I-Automation ye-test automation yakho kwi-CI/CD pipelines.
Ukuvumelana nathi; uya kufumana i-pause ukuba usebenzise i-cycles ye-development ye-rapid, kwaye kufuneka uqhagamshelane ikhowudi ngexesha lokuxhuma into kwi-software.
Ukwazi ukuvelisa iingcebiso zePython kwi-CI / CD ye-pipeline yakho ukuze isebenze ngokuzenzakalelayo xa ikhowudi ifumaneka. Oku kukuvumela ukuyifaka ngokukhawuleza iingcebiso kunye nokukhuthaza ingcebiso olungcono kwiphepha.
Ukuvelisa i-Python testing automation kwi-CI / CD pipelines yakho. Faka i-pytest-cov
kwi-project yakho kwaye usebenzisa i-Pytest command yokusebenza i-tests yakho ngokuzenzakalelayo kunye nokubonisa iingxaki.
ngokutyeba
Wagqibela:
- igama: Ukulungiselela iinkcukacha
- igama: Ukulungiselela iinkcukacha
run: pip install pytest pytest-cov
run: pip install pytest pytest-cov
- igama: Ukulungiselela iinkcukacha
- igama: Ukulungiselela iinkcukacha
Wagqibela ukuqhagamshelwano -cov=my_project
run: ubungakanani --cov=my_project
Ukuba usebenza kwi-test suites ezininzi, kufuneka ukongeza i-robot framework kwi-CI tools efana ne-Jenkins. Ngokuba i-Unittest, ukucacisa kunokukwazi ukuyifaka i-test yakho kwi-pipeline efana ne-pipeline;
Ukuhlaziywa:
Script:
I-script:
- I-Python -m coverage run -m unittest discover
- I-Python -m coverage run -m unittest discover
- Iinkcukacha ze-Python -m
- I-Python -m coverage report
6. Yenza iingcebiso kwi-isolation.
Enye yeengxaki ezininzi ezinxulumene ne-Python test automation i-test breakage ngenxa yeengxaki ezininzi. Ngokuvamile, i-test yakho ibonakaliswa ngenxa yokuba i-test yakho eyahlukileyo kwi-data okanye kwimeko ye-environment ye-test ezininzi. Ngoko ke, ukuba i-test eyodwa ibonakaliswa, i-test ezininzi ibonakaliswa ngenxa ye-reaction ye-chain ye-change. Ukusombulula oku, i-isolate i-test ezininzi ukuze ifumaneke ngamnye ngaphandle komnye. Ngoko ke, unokufumana i-debug ngaphandle kokufumana i-effect ye-riple kwi-test ezininzi.
Kusetyenzisa indlela yokuqinisekisa i-test using setup and teardown logic on Pytest;
Ukuqhagamshelana nathi
Ukuhambisa iinkcukacha
@pytest.fixture
@pytest.fixture
def clean_environment():
def clean_environment():
# Ukulungiselela: Ukulungiselela umgangatho olutsha
# Ukusetyenziswa: Ukusetyenziswa kwimeko ekhuselekileyo
Iphrinta("Ukuqhathaniswa kwimvelo efanelekileyo.")
phrinta("Ukuvelisa isixeko se-clean.")
yield
yield
# I-Teardown: Ukuguqulwa kwimeko
# I-Teardown: Ukuguqulwa kwimeko
Iphrinta("Ukulungiselela emva kokuphendula.")
print("Ukulungiselela emva kokuphendula.")
def test_example(clean_environment):
< Br >def test_example(umgangatho_umgangatho):
I-assert 2 + 2 == 4
I-assert 2 + 2 == 4
Qaphela ukuba i-Pytest fixture ibonelela ukuba iimveliso ezisetyenziswe emva kwexabiso. Oku kukuvumela ukuguqulwa kwimvelo kwimeko yayo yokuqala emva kwexabiso.
7. Qhagamshelana neempawu ezilungileyo ze-test automation.
Ndiyathanda iindlela ezininzi ezilungileyo zokwenza i-Python ye-test automation;
- Kuba uqala i-test automation, uqhagamshelane i-test metrics ye-test suite yakho. I-test metrics efana ne-code coverage, inombolo yeengxaki ze-test ezisetyenziswa, ezidlulileyo okanye ezikhoyo, kunye nexesha le-test iya kukunceda ukufumana iingxaki ze-bottlenecks ukuyisombulula.
- Kwangathi kakhulu, wonke umntu kwi-team yakho kufuneka uyazi indlela yokufunda i-end-to-end (E2E) test. Ngokwenza oku, umgangatho akuyona kuphela i-afterthink kodwa ibekwe kwinkqubo yokukhula ukusuka ekuqaleni.
- Don't test third-party dependencies like links to external sites
- Kuba uqala ukufaka i-test automation, uqhagamshelane i-test metrics ye-test suite yakho. I-test metrics efana ne-code coverage, inombolo yeengxaki ze-test ezisetyenziswa, ezidlulileyo okanye ezikhuselekileyo, kunye nexesha lokuvelisa i-test iya kukunceda ukuyifaka i-test kunye nokufumana iingxaki ze- bottlenecks ezivula.
- Kwenziwe ngempumelelo kakhulu, wonke umntu kwiqela lakho kufuneka uyazi indlela yokubhala i-end-to-end (E2E) test. Ngokwenza oku, umgangatho akuyona nje ngexesha lokuphendula, kodwa kuxhomekeke kwinkqubo yokuthuthukiswa ukusuka ekuqaleni.
- Khangela iingxaki ze-third-party ezifana neengxaki zewebhu ze-externals okanye iinkonzo ezikhoyo. Oku kunokukwazi ukunciphisa i-test yakho, kwaye kunokwenzeka i-cookie banners okanye ezinye izinto ezininzi ezinokuthi kunokukhathaza i-test yakho.
- Ukusetyenziswa
i-assertions ukuba iziphumo zakho ze-test zihlanganisa iziphumo ezininzi. inkonzo inkonzo- Qinisekisa izixhobo zakho ze-test automation ukuhlaziywa i-app yakho kwi-versions ezintsha ze-browser kunye nokufumana i-bug ngaphambi kokufumana kubathengi.
Ukuhlaziywa
I-Testing ye-Automatization inokufanelekileyo, ikakhulukazi xa uqhagamshelane neengxaki ezininzi ezibonakalayo. Ndafumana ukuba i-Testing Automation iyiphi na ingxaki engaphantsi xa usebenzisa i-Testing Pyramid. Kule, utshintshe kwi-Unity kunye ne-Integration Tests ngaphambi kwe-E2E Tests. Ngeengxelo kunye ne-Practices iye zibonakalisa, unako ukuqhuba ngokushesha i-regression testing kwi-CI/CD environment kwaye ufumane i-feedback efanelekileyo ngaphambi kokusetyenzisa i-code.