Tento týden jsem se ponořil do automatizované testování s Úhloměr.Vzhledem k tomu, že budování pobočky v poslední době hodně selhává s timeouty a dalšími problémy, pokusím se zjistit více a opravit to.

co je automatizované testování.

automatizované testování usnadňuje život, jakmile je správně a užitečné:) automatizované testování používá software / nástroje k rychlému testování kódu. Nastavíte testovací skříně a ty jsou prováděny prostřednictvím nástrojů. Po napsání těchto případů není nutná žádná interakce s člověkem. Je možné porovnat, spustit zadávat data prostřednictvím testů.

nejběžnější testy a jejich rozdíly.

dvě nejběžnější testovací metody, se kterými jsem se dosud setkal, jsoutestování jednotkou a testování E2E.

testování jednotek

testování jednotek je zaměřeno na testování jednotlivých jednotek.Přemýšlejte o tom jako o funkci nebo malé části kódu.Vysmíváte se (falešným) službám, sítím a dalším zdrojům a provádíte všechna testování izolovaně.
V Angular Karma a Jasmine framework se většinou používají k testování jednotek.

testování E2E

s testováním e2e můžete procházet GUI jako uživatel.Kliknutí na tlačítka, stránky, nabídky, CRUD. (není ve výrobě)
nejběžnějším použitím pro testování E2E s úhloměrem je selenový webový ovladač s úhloměrem.
takže pro testování kódu je vhodné použít jednotkové testy.Pokud chcete otestovat funkční využití vašeho webu, měli byste zkusit E2E.

proč testovat?

účelem je rychle se setkat s problémy.Pro testování E2E: také nechcete testovat kliknutím na obrazovky, abyste viděli, že tlačítko ifa stále funguje, nebo se stránka načte sami.To by bylo hodně práce a není konzistentní, pokud by to bylo provedeno různými vývojáři.

nastavení úhloměru.

jak nainstalovat úhloměr.

instalovat protractor spusťte následující příkaz z příkazového řádku:
instalaci úhloměr příkazem:

npm install -g protractor

Pak instalaci webdriver manažer pro selen.

webdriver-manager update

webdriver-manager start

Vytvořte test.

nejprve potřebujete dva soubory k vytvoření testu, spec soubor a konfigurační soubor.
v konfiguračním souboru nakonfigurujete umístění souborů spec. Obsahuje také prohlížeč, který chcete použít k testování, výchozí je Chrome.Selenový serveradress je součástí komunikace.A také rámec je nastaven, to je jasmín.Pak to vypadá takto:

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

Chcete-li vytvořit test, musíte určit případ. Postavíte případ do spec souboru. Nejprve zjistíte, co musí test do.In v tomto případě zkontrolujete, zda vaše vstupní stránka zobrazuje uvítací zprávu.

 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') })})

nejprve popíšete stránku nebo prvek, který chcete otestovat, v tomto příkladu je to vstupní stránka. Popis je název syntaxe testsuite a Jasmine.Obsahuje tok od konce do konce. V tomto jsou “ IT “ testovací případy.
pak určíte, co ‚to‘ musí udělat. ‚It‘ je globální funkce od Jasmine. Můžete mít více‘ it ‚ testcases v toku.(popište)
V tomto případě zkontrolujete, zda se na vstupní stránce zobrazila uvítací zpráva, a proto je dostupná podle očekávání. (pravda, toBeThruthy) můžete také zkontrolovat, zda text je stejný jako text na vstupní stránce ( rovnat(‚yourText‘)

Async Čekají.

JavaScript je asynchronní, nevíte, jaký skript se spustí jako první. Úhloměr toky jsou synchronní, vaše kroky jsou v určitém pořadí provedení. Klikněte na toto a potom na toto tlačítko.
úhloměr toky jsou psány s příslibem. Úhloměr zvládne slib s počkat, až je kompletní.

syntaxe async wait je podobně jako syntaxe TypeScript.
asynchronní funkci lze zabalit pomocí ‚async‘ a ‚wait‘.
wait se používá před linkou, na kterou chceme čekat.

 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') })})

jaký byl hlavní problém s mými sestavami?

moje testy hodně selhaly s časovými limity. Použil jsem asynchronní čekání a stále jsem měl nějaké problémy. Jak vidíte, syntaxe je téměř stejná s TypeScript async / wait.

našel jsem to na protractortest.org místo.

nezapomeňte vypnout control_flow, nelze použít mix async/await a řízení toku: async/await způsobuje tok řízení, aby se stal nespolehlivé (viz github issue). Takže pokud jste async/await kdekoliv v spec, měli byste použít SELENIUM_PROMISE_MANAGER: false

přidal jsem to do config a ladit vlevo přes chyby.
stavím v nějaké době čekání/spánku mezi některými testy a běží dobře.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.