în această săptămână am porumbel în testarea automată cu Protractor.Deoarece construirea unei sucursale eșuează foarte mult în ultima vreme cu timeout-uri și alte probleme, voi încerca să aflu mai multe și să rezolv acest lucru.

ce este testarea automată.

testarea automată face viața mai ușoară odată ce este configurat corect și util :)testarea automată utilizează software / scule pentru a testa codul rapid. Ai înființat testcases și acestea sunt executate prin scule. Nici o interacțiune umană pentru a testa este necesară după ce ați scris aceste cazuri. Se poate compara, executa o introduce date prin teste.

cele mai frecvente teste și diferențele lor.

cele mai frecvente două metode de testare pe care le-am întâlnit până acum sunttestarea unității și testarea E2E.

unitatea de testare

unitatea de testare este axat pe testarea unități unice.Gândiți-vă la acest lucru ca o funcție sau o mică parte a codului.Te bate joc (fals) servicii, rețea și alte resurse și de a face toate testele izolate.
În Karma unghiulară și cadru Jasmine sunt utilizate în cea mai mare partescrie teste unitare.

testarea E2E

cu testarea e2e puteți trece prin GUI ca un utilizator nu.Făcând clic pe butoane, pagini,meniu, CRUD. (nu în producție)
utilizarea cea mai comună pentru testarea E2E cu unghiular este seleniu web-driver cu raportor.
deci, pentru testarea codul este util să se utilizeze teste unitare.Dacă doriți să testați utilizarea funcțională a site-ului dvs., atunci ar trebui să încercați E2E.

de ce să testați?

scopul este de a întâlni probleme rapid.Pentru testarea E2E: de asemenea, nu doriți să testați făcând clic pe ecrane pentru a vedea butonul ifa încă funcționează sau o pagină se încarcă de unul singur.Aceasta ar fi o mulțime de muncă și nu este consecventă dacă s-ar facede către diferiți dezvoltatori.

Configurarea Raportorului.

cum se instalează raportor.

pentru a instala protractor executați următoarele din linia de comandă:
instalați protractor prin rularea:

npm install -g protractor

apoi instalați webdriver manager pentru seleniu.

webdriver-manager update

webdriver-manager start

construiți un test.

Mai întâi aveți nevoie de două fișiere pentru a crea un test, un fișier spec și un fișier de configurare.
în fișierul de configurare configurați locația fișierelor spec. De asemenea, conține browserul pe care doriți să îl utilizați pentru a testa, implicit este Chrome.Seleniul serveraddress este inclus pentru a comunica.Și, de asemenea, cadrul este stabilit, aceasta este Jasmine.Apoi arată cam așa:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

pentru a construi un test trebuie să determinați un caz. Ai construi cazul în dosarul spec. În primul rând determina ce testul trebuie să do.In în acest caz, verificați dacă pagina dvs. de destinație afișează mesajul de întâmpinare.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

Mai întâi descrieți pagina sau elementul pe care doriți să îl testați, în acest exemplu este pagina de destinație. Descrieți este numele sintaxei testsuite și Jasmine.Acesta conține fluxul de la capăt la capăt. În cadrul acestei Sunt ‘ it ‘ testcases.
atunci determinați ce trebuie să facă. ‘It’ este o funcție globală de la Jasmine. Puteți avea mai multe testcases’ it ‘ în fluxul.(descrie)
în acest caz, verificați dacă pagina de destinație a primit mesajul de bun venit afișat și, prin urmare, este disponibil așa cum era de așteptat. ( adevărat, toBeThruthy) de asemenea, verificați dacă textul este același cu textul de pe pagina de destinație (toEqual (‘yourText’)

asincron așteaptă.

JavaScript este asincron, nu știi ce script se va executa mai întâi. Fluxurile de raportor sunt sincrone, pașii dvs. sunt într-o anumită ordine de execuție. Faceți clic pe acesta, apoi pe butonul respectiv.
fluxurile de raportoare sunt scrise cu o promisiune. Protractor poate ocupa promisiunea cu o așteptare până când este completă.

sintaxa de asincron așteaptă este la fel ca sintaxa TypeScript.
funcția asincronă poate fi înfășurată cu ‘asincron’ și ‘așteaptă’.
așteptarea este folosită înainte de linia pe care vrem să o așteptăm.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

care a fost principala problemă cu construcțiile mele?

testele mele au eșuat foarte mult cu timeout-uri. Am folosit async așteaptă și a avut încă unele probleme. După cum puteți vedea, sintaxa este aproape aceeași cu TypeScript async/wait.

am găsit asta pe protractortest.org site-ul.

nu uitați să dezactivați control_flow, nu puteți utiliza un amestec de asincron/wait și fluxul de control: asincron / wait face ca fluxul de control să devină nesigur (consultați problema github). Deci, dacă asincronizați / așteptați oriunde într-o spec, ar trebui să utilizați SELENIUM_PROMISE_MANAGER: false

am adăugat acest lucru la config și depanat stânga peste erori.
am construi în unele așteptați / somn timp între unele teste și se execută bine.

Lasă un răspuns

Adresa ta de email nu va fi publicată.