Тестирајте аутоматизацију користећи Питест и Селениум ВебДривер

Блог

Тестирајте аутоматизацију користећи Питест и Селениум ВебДривер

Аутоматизација тестирања помоћу Питеста и Селениум ВебДривер-а: За све потребе тестирања више уређаја, прегледача и уређаја, не тражите ништа даље од моћне комбинације Селениум ВебДривер-а и питеста.



Један од изазова са којима се програмери суочавају је осигурати да њихова веб апликација ради беспрекорно на различитим скуповима уређаја, прегледача и платформи оперативних система. Овде тестирање унакрсног прегледача игра веома важну улогу у тестирању веб апликације јер помаже у тестирању у различитим комбинацијама. На основу циљног тржишта, развојни тимови и тимови производа морају да зацртају план за различите активности укључене у тестирање компатибилности међу прегледачима.






Селениум - Увод и интерфејс за ВебДривер

Што се тиче тестирања веб апликације, на располагању је неколико веб оквира који аутоматизују тестове изведене на различитим веб прегледачима. Селениум је веома популаран оквир који се првенствено користи за аутоматизовано тестирање веб апликација. То је алатка отвореног кода помоћу које се веб тестирање може извршити против популарних прегледача попут Цхромеа, Фирефока, Опере и Мицрософт Едгеа. Оквир се такође може користити ако се тест мора извршити на Интернет Екплорер -у (најновија верзија или старе верзије).



Селениум ВебДривер се сматра једном од кључних компоненти Селениум оквира. Селениум ВебДривер АПИ је збирка АПИ-ја отвореног кода/веза специфичних за језик који прихвата команде и шаље их прегледачу, против чега се врши тестирање. Појединац који је одговоран за развој тестова не мора да се брине око детаља о архитектури или других техничких спецификација веб прегледача јер ВебДривер делује као интерфејс између пакета за тестирање/тестног случаја и веб прегледача (постигнуто коришћењем ВебДривера специфичног за прегледач).



Селениум ВебДривер подржава различите програмске језике као што су Питхон, Ц#, Руби, ПЕРЛ и Јава. Доњи дијаграм приказује поједностављен приказ Селениум ВебДривер интерфејса. Већ смо покрили Селениум ВебДривер архитектуре детаљно у нашем претходном посту.






Питест Тест Фрамеворк - Увод и предности

Питхон има неколико оквира за тестирање који олакшавају задатак тестирања веб апликација; униттест и питест су најчешће коришћени оквири. униттест је део стандардне библиотеке (у Питхону) и долази као део Питхон инсталације. За аутоматизацију теста помоћу питеста, популарнијег од ова два, са Селениум ВебДривер -ом, морате засебно инсталирати питест. Ево неких предности питест оквира:

  • Могу га користити развојни тимови, тимови за тестирање, тимови који практикују развој вођен тестирањем (ТДД), као и у пројектима отвореног кода.
  • Може се користити у једноставним, као и у сложеним, функционалним тест случајевима за апликације и библиотеке.
  • Лако се преноси постојећи тестни пакет на питест за обављање аутоматизације теста помоћу питест -а са Селениум ВебДривер -ом.
  • Компатибилност са другим оквирима за тестирање као што су униттест и нос, па је прелазак на овај оквир врло лак.
  • Подржава параметризирање, што је инструментално за извршавање истих тестова са различитим конфигурацијама помоћу једноставног маркера. Можете смислити ефикасније тестне случајеве/програмске пакете са мање понављајућом имплементацијом кода.
  • Велики број тврдњи које пружају детаљније информације о сценаријима квара.
  • Подршка учвршћења и класа. Користећи Фиктурес, постаје лако учинити заједничке тестне објекте доступним у модулу, сесији, функцији или класи. Распореди и класе ће бити детаљније обрађени у наредним одељцима.
  • Добра и ажурна документација.
  • кдист подршка путем које се могу паралелизовати тестни случајеви.

Укратко, Питест је софтверски оквир за тестирање који се може користити за израду једноставних, али скалабилних тестних случајева са лакоћом.

Сада када сте свесни предности питеста у односу на друге оквире за тестирање, хајде да детаљно погледамо оквир питеста и како се он може користити са Селениум ВебДривер оквиром како би се извршило аутоматизовано тестирање прегледача за веб апликације.

Аутоматизација тестирања помоћу Питеста - инсталација и почетак

Као што је раније поменуто, питест није део стандардне Питхон инсталације и треба га инсталирати засебно. Да бисте инсталирали питест, требало би да извршите следећу команду на промпту/терминалу:

pip install –U pytest

Када се инсталација доврши, можете да проверите да ли је инсталација успешна, уписивањем следеће наредбе:

pytest --version

Испод је излаз када се горња команда изврши на Линук и Виндовс машини

извоз хтмл табеле у Екцел

ПиЦхарм је популаран ИДЕ који се користи за развој питеста. Можете инсталирати ПиЦхарм Еду верзију за Виндовс, Линук или мацОС. За развој користимо ПиЦхарм за Виндовс. Када се ПиЦхарм инсталира, морате се уверити да је подразумевани тест руннер питест. Да бисте променили подразумеваног тестног тркача, требало би да одете до Датотека -> Подешавања -> Алати -> Питхон интегрисани алати и промените подразумевани тест руннер за извођење аутоматизације теста помоћу питест са Селениум ВебДривер -ом.

Сада када је ПиЦхарм Еду инсталиран и подразумевани тест руннер је подешен на питест, морате да инсталирате пакет Селениум за Питхон да бисте извршили аутоматизацију теста помоћу питеста са Селениум ВебДривер -ом. Да бисте инсталирали Селениум, требало би да позовете доле наведену команду у терминалу ПиЦхарма.

pip install -U selenium ( Syntax – pip install –U )

Испод је приказан снимак извршења команде:

Сада када је ваше развојно окружење све спремно, разматрамо неке од функција и аспеката питеста.

Питест - Употреба, излазни кодови и компилација

питест и пи.тест се могу користити наизменично. Да бисте добили информације о аргументима који се могу користити са питестом, можете извршити наредбу испод на терминалу.

pytest --help #Command to get help about the options that can be used with pytest command # Details about fixtures pytest --fixtures #Shows the available built-in function arguments

Када се питест код изврши, он резултира једним од следећих излазних кодова:

| ИЗЛАЗНИ КОД | ОПИС |

| 0 | Тест случајеви/програмски пакети су успешно изведени и крајњи резултат је био ПАСС |

| 1 | Тест случајеви/програмски пакети су извршени, али неки тестови нису успели |

| 2 | Извршење теста је зауставио корисник |

реаговати боотстрап дијалог за потврду

| 3 | Дошло је до непознате грешке при извршавању тестова |

| 4 | Употреба питест команде је нетачна |

| 5 | Нису прикупљени тестови |

Важно је да датотека која садржи питест код буде названа као тест .пи или тест.пи . Да бисте компајлирали и извршили питест изворни код за извођење аутоматизације теста помоћу питеста са Селениум ВебДривер -ом, можете користити следећу команду на терминалу

pytest --verbose --capture=no

Погледајмо неке примере аутоматизације теста помоћу питеста. Почињемо са врло једноставним примером –тест_питест_екампле_1.пи.

#pytest in action – test_pytest_example_1.py def function_1(var): return var + 1 def test_success(): assert function_1(4) == 5 def test_failure(): assert function_1(2) == 5

У горњем фрагменту кода креирамо функцију под именом | _+_ | који узима један аргумент по имену | _+_ | . Постоје два тест случаја: | _+_ | и | _+_ | . Тест случајеви се извршавају серијским редоследом, а потврда се издаје након извршења тест случајева. Саставите код помоћу доле наведене команде

function_1

Као што се види на излазу, резултат првог тестног случаја је ПАСС (приказан плавом бојом), а резултат другог тестног случаја ФАИЛ (приказан црвеном бојом).

питест користи потврду доступну у Питхону за верификацију резултата. Он даје значајне информације које се могу користити за верификацију и отклањање грешака. питест.раисес се обично користи за подизање изузетака; испод је пример где се рачуна факторијал броја. У једном тестном случају, негативан број се преноси као улаз у факторску функцију и | _+_ | је подигнута.

| _+_ | садржи имплементацију која користи рекурзију за израчунавање факторијала улазног броја. Пре израчунавања факторијала врши се провера улазних параметара. Упозорење би се подигло у случају да је улазни број негативан.

var

| _+_ | је питест имплементација која користи факторске функције. Имплементирана су три тест случаја - | _+_ | (излаз из факторске_функције се упоређује са излазом добијеним из матх.фацториал модула), | _+_ | (тврдња се поставља када је улазни број негативан), и (резултати излаза из факторије_функције се упоређују са специфичним вредностима).

test_success()

Код можете извршити помоћу команде | _+_ | , било у командној линији или на терминалу ПиЦхарм ИДЕ -а. Као што се види на снимку, сви тест случајеви су прошли и дневници под исписом исписани су на конзоли

Аутоматизација тестирања помоћу Питеста - чвора (употреба и имплементација)

Размотримо пример где морате да извршите одређене МиСКЛ упите у бази података која садржи податке о запосленима у организацији. Време потребно за извршавање упита зависиће од броја записа (тј. Запослених) у бази података. Пре него што се упити изврше, потребне операције (повезивање са базом података в.р.т) морају бити изведене, а враћени рукохват ће се користити у накнадној имплементацији која укључује базу података. Операције базе података могу бити ЦПУ интензивне (како се повећава број записа); стога треба избегавати понављање имплементације и извршења. Постоје два начина на која се ово питање може решити:

  1. Уз помоћ подешавања класичног кунит стила заједно са методама рушења.
  2. Коришћењем чвора (препоручује се).

Ксунит стил светиљки већ је подржан у униттест -у, али питест има много бољи начин бављења чвора. Уређаји су скуп ресурса који се морају поставити пре почетка теста и морају се очистити након завршетка тестирања. Садржи много побољшања у односу на класичну имплементацију функција подешавања и скидања. Главне предности коришћења уређаја су

  • Могу га користити развојни тимови, тимови за тестирање, тимови који практикују развој вођен тестирањем (ТДД), као и у пројектима отвореног кода.
  • Може се користити у једноставним, као и у сложеним, функционалним тест случајевима за апликације и библиотеке.
  • Лако се преноси постојећи тестни пакет на питест за обављање аутоматизације теста помоћу питест -а са Селениум ВебДривер -ом.
  • Компатибилност са другим оквирима за тестирање као што су униттест и нос, па је прелазак на овај оквир врло лак.
  • Подржава параметризирање, што је инструментално за извршавање истих тестова са различитим конфигурацијама помоћу једноставног маркера. Можете смислити ефикасније тестне случајеве/програмске пакете са мање понављајућом имплементацијом кода.
  • Велики број тврдњи које пружају детаљније информације о сценаријима квара.
  • Подршка учвршћења и класа. Користећи Фиктурес, постаје лако учинити заједничке тестне објекте доступним у модулу, сесији, функцији или класи. Распореди и класе ће бити детаљније обрађени у наредним одељцима.
  • Добра и ажурна документација.
  • кдист подршка путем које се могу паралелизовати тестни случајеви.

Од лансирања верзије 3.5, инсталације са већим опсегом имају приоритет над инсталацијама нижег опсега у смислу инстанцирања. Распоред вишег опсега укључује сесије, а мањи опсег обухвата класе, функције и друго. Можете чак и „„ параметризирати “ове функције учвршћења како бисте их извршили више пута заједно са извршавањем зависних тестова.

Параметризација уређаја се широко користи за писање исцрпних функција испитивања. Испод је једноставан код за аутоматизацију теста помоћу питеста где | _+_ | и | _+_ | „ресурса 1“ се позива, чак и када се изврши тест_2. Будући да је ово једноставна имплементација (са мање израчунавања), нема много општих трошкова чак и када се позову непотребна подешавања и позиви модула, али би то могло ометати укупне перформансе кода у случају да су укључене било које операције које захтевају велики процесор (попут повезивања базе података).

test_failure()

Извршите тест случај „тест_2_нот_усинг_ресоурце_1“ тако што ћете позвати следећу команду на терминалу:

pytest --verbose --capture=no test_pytest_example_1.py

Као што је примећено из излаза [Филенаме-Питест-Фиктурес-проблем.пнг '>

Као што се види у доњем примеру, дефинишемо функцију учвршћења | _+_ | (слично подешавању у имплементацији стила кунит) и | _+_ | (слично рушењу у имплементацији кунит стила). Функција учвршћења има опсег модула користећи | _+_ | .

AssertionError

Код извршавамо покретањем свих тест случајева. Као што је приказано у доњем испису [Назив датотеке-Питест-Фиктурес-алл-тестови-извршени.пнг '>

Сада извршавамо само тест 2, то јест, | _+_ | . Као што се види у испису испод [Назив датотеке-Питест-Фиктурес-онли-2-тестс-екецуте.пнг '> овде .

Тестирајте аутоматизацију помоћу Питеста са Селениум ВебДривер -ом

Када тражите оквир за аутоматизацију теста, вероватно би вам био потребан оквир за тестирање који испуњава све ваше захтеве. Оквир треба да има могућност евидентирања догађаја, генерисања извештаја о тестовима и требало би да има добру подршку заједнице. Питест испуњава све ове захтеве и аутоматизација тестирања коришћењем питеста са Селениум ВебДривер -ом се топло препоручује јер не укључује стрму кривуљу учења.

Када планирате да развијете аутоматизацију теста помоћу питеста са Селениум ВебДривер -ом, прва брига на коју морате да обратите пажњу је када треба да учитате прегледач. Учитавање нове инстанце прегледача након сваког теста се не препоручује јер то није скалабилно решење и може повећати укупно време извршавања теста. Препоручује се учитавање прегледача (на тестирању) пре него што су стварни тест случајеви започели и истоварење/затварање инстанце прегледача чим се тестови заврше. Ово је могуће коришћењем Фиктурес ин питест. Као што је раније поменуто, Фиктурес широко користе концепт познат као ињекција зависности, где се зависности могу учитати пре него што су стварни тестови започели.

Подразумевано, светиљке имају опсег функција, у зависности од захтева; можете променити опсег имплементираног уређаја у модул, сесију или класу. Као и животни век променљивих у језику Ц, опсег учвршћења показује колико ће пута одређена јединица бити креирана.

| ОПСЕГ ФИКТУРЕ | ОБЈАШЊЕЊЕ |

| Функција | Учвршћивање се извршава/покреће једном по тестној сесији |

| Сесија | Једно учвршћење је створено за читаву тестну сесију |

ноде јс трговачки бот

| Класа | Само једно учвршћење се ствара по класи тестова |

| Модул | Уређај се креира једном по модулу |

Када се тестови заврше, можда ћете бити заинтересовани да снимите резултате теста у формату извештаја (попут ХТМЛ -а). Морате инсталирати питест-хтмл модул за исти

factorial_example.py

Испод је снимак извршне команде:

Сада када имате знање о питест учвршћењима, Селениум -у и Селениум ВебДривер интерфејсу, погледајмо пример са свим овим стварима на делу. Пре него што започнете имплементацију, обавезно преузмите управљачки програм Гецко за Фирефок и ЦхромеДривер за Цхроме са овде и овде редом. Да бисте избегли помињање путање/локације на којој су управљачки програми преузети, уверите се да сте те одговарајуће управљачке програме поставили на локацију на којој се налазе одговарајући прегледачи. На доњем снимку можете видети да смо копирали Гецкодривер.еке на локацију на којој је присутан прегледач Фирефок (фирефок.еке).

Сада када сте спремни за подешавање, почнимо са имплементацијом. Увезите све потребне модуле на почетку како бисте избегли грешке. У нашем случају, увезени модули су селениум, питест, питест-хтмл. Две функције учвршћења | _+_ | и | _+_ | имају опсег класе. Као што се види у функцији учвршћења | _+_ | , инстанца Фирефока се ствара помоћу ГецкоДривер -а, док се у | _+_ | , инстанца Цхроме прегледача се креира помоћу ЦхромеДривер -а. принос садржи имплементацију рушења; код унутар ииелд је одговоран за обављање активности чишћења. Класа се користи за груписање тестних случајева, у овом случају постоје две важне класе, | _+_ | и | _+_ | . Имплементиране класе користе учвршћења која су имплементирана помоћу марк.усефиктурес [| _+_ | ]. Тестни случај изводи једноставан тест позивања одговарајућег прегледача (Фирефок/Цхроме) и отварања испоручене УРЛ адресе, тј. хттпс://ввв.ламбдатест.цом/ Назив датотеке-тест_селениум_вебдривер-2.пи

def factorial_function(number): # Perform a check whether the input number is positive or not, if it is not # positive, raise an assert assert number >= 0. and type(number) is int, 'The input is not recognized' if number == 0: return 1 else: # recursive function to calculate factorial return number * factorial_function(number – 1)

Пошто нам је потребан тестни излаз у ХТМЛ датотеци, правимо нас од | _+_ | т током извршавања тестног кода. Комплетна команда за извршавање аутоматизације теста помоћу питеста са Селениум ВебДривер -ом:

| 1 |

test_factorial_example.py

|

Испод је излаз извршења, тестцасе тест_опен_урл () се извршава за класу | _+_ | и | _+_ | . Извештај о тестирању је питест_селениум_тест_репорт.хтмл [Слика-ПиТест-Селениум-Оутпут-1.пнг '>

Као што се види у горњој имплементацији, једина разлика између функције учвршћења за Фирефок и Цхроме прегледач је подешавање одговарајућег прегледача. Већина имплементације је иста за оба претраживача, па постаје важно оптимизовати код избегавајући понављање кода. То је могуће коришћењем параметризованих уређаја. Као што се види у имплементацији [Име датотеке-тест_селениум_вебдривер-1.пи], главна промена је додавање параметара у уређаје, као у | _+_ | . У зависности од прегледача који се користи, одговарајући ВебДривер се користи за позивање прегледача.

test_standard_library

У нашем случају користимо прегледаче Цхроме и Фирефок и тест случај | _+_ | извршаваће се за сваки прегледач посебно. Као што се види у излазу, тест случај се једном позива са параметрима као што су фирефок и цхроме.

Цросс-Бровсер тестирање са Питестом, Селеном и Ламбдатестом

Увек постоји ограничење у количини тестирања које можете да изведете на вашој локалној машини или машинама за тестирање јер се темељно тестирање мора извршити на различитим врстама уређаја, оперативним системима и прегледачима. Постављање локалног окружења за тестирање није скалабилна и економична опција. Овде ваш тестни тим може да искористи моћ Ламбдатестовог унакрсног тестирања прегледача на могућностима облака.

Можете извршити ручно, као и аутоматизовано тестирање ваше веб апликације или веб локације у више прегледача на различитим прегледачима (чак и на старим верзијама) и уређајима. Такође можете вршити тестирање у реалном времену користећи њихову функцију Тунел која вам омогућава да користите њихову тестну инфраструктуру са терминала. ЛамбдаТест Селениум Аутоматион Грид вам омогућава да изводите енд-то-енд тестове аутоматизације на сигурној, поузданој и скалабилној Селениум инфраструктури. ЛамбдаТест Селениум Грид можете користити не само за повећање укупне покривености кода (путем тестирања), већ и за смањење укупног времена потребног за извршавање ваших скрипти за аутоматизацију написаних на Питхону.

Закључак

Аутоматизација тестирања помоћу Питеста са Селениум ВебДривер -ом је веома повољна опција као оквир који има добре карактеристике помоћу којих инжењери за тестирање могу доћи до имплементације која је лака за имплементацију и која је скалабилна. Може се користити за писање тестних случајева за једноставне сценарије, као и за врло сложене сценарије. Програмеру који добро познаје Питхон, униттест/друге оквире за тестирање засноване на Питхону, Питест би се лако научио. Са питестом који користи концепте попут убризгавања зависности, мањи су трошкови одржавања изворног кода.

Будући да се број уређаја повећава са сваким даном, постаје крајње непрактично ручно тестирати ваш код на различитим уређајима, оперативним системима и прегледачима; овде тестери/програмери могу да користе Ламбдатестове тестирање међу прегледачима алат, који вам омогућава да без напора извршите аутоматизацију теста помоћу питеста са Селениум ВебДривер -ом.

#селениум #питхон #тестинг #јава