497 ukufunda
497 ukufunda

Iingcebiso ze-7 kunye neengcebiso ze-Python ye-Test Automation

nge Pradeesh Ashokan6m2025/03/30
Read on Terminal Reader

Inde kakhulu; Ukufunda

I-Python iyiphi na iilwimi ezilungileyo ze-programming ye-test automation. Khetha i-test automation framework efanelekileyo ngokuxhomekeke kwizicelo zakho zeeprojekthi. Usebenzisa i-WebDriverWait kwi-Selenium ukufumana iingxaki ze-timing.
featured image - Iingcebiso ze-7 kunye neengcebiso ze-Python ye-Test Automation
Pradeesh Ashokan HackerNoon profile picture
If you've been running automation testing ngeJavaScript, Node, okanye ezinye iilwimi programming, uya kufumanisa ukuba ngexabiso kakhulu ngePython. Izixhobo ezininzi i-Python inikezelo, ubuncinci, kunye nokusetyenziswa kwimveliso yayo epheleleyo yenza ke enye kwiilwimi programming best for test automation.


inkqubo yokuvelisainkqubo yokulinganisa


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 (RPA), i-robot framework yinto elungileyo. I-syntax ikakhulu iilwimi yomntu, ngoko kufuneka lula kakhulu ukusebenza. Ukuvavanya iwebhu, unako kwakhona ukuxhumanisa nezinye iinkqubo ze-Python, ezifana neSelen.

RPAI-RPA


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.

Image Source

Image Source

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.
  • inkonzoinkonzo
  • 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.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks