Cypřiše: 5 důležitých faktů, které byste měli vědět

Jednou z osvědčených postupů v automatizaci testů je oddělení testovacích dat od testovacích souborů. Tento aspekt je jedním z primárních požadavků při navrhování testovacího rámce. Cypress nám pomáhá schopnost oddělit data testu pomocí Cypřiš Přístroje. V tomto tématu budeme diskutovat o Cypress příslušenství s praktickou implementací a příklady v reálném čase

Obsah

Co je součástí Cypressu?

Lze použít svítidla Cypress zdrojová data z externích souborů. Pomáhají vám svítidla v Cypressu číst nebo zapisovat do souborů. Jedním z populárních frameworků v automatizaci testování je Data-driven framework, kde oddělujeme data od testovacích souborů. Data obvykle uchováváme v externím souboru, jako je Excel, a čteme je pomocí externích knihoven. Cypress nám poskytuje stejnou funkci pro čtení dat ze souborů.

Cypress nám poskytuje složku s názvem svítidla, kde můžeme vytvářet soubory JSON a číst z nich data, kde tyto soubory můžeme číst ve více testovacích souborech. Data uložíme jako klíč – hodnota spárovat a přistupovat k nim.

Jak používat Cypress Fixtures v testech?

Ke svítidlům Cypress můžeme přistupovat pomocí následující syntaxe uvedené níže

cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)

Budeme rozumět parametrům, které lze předat ve svítidlech

cesta k souboru - cesta, kam jste uložili svá testovací data

kódování – Kódování, které se používá při používání souboru. Některá kódování jsou ascii, base64, hex, binární atd

možnosti – V opcích můžeme předat timeout Odezva. Je to specifikovat časový limit pro vyřešení cy.fixture ()

Jak číst data ze svítidel v Cypressu?

Budeme definovat testovací data v souboru pod upínač složku. K testovacím datům ze souboru JSON v testovacím skriptu budeme přistupovat pomocí přípravků Cypress.

Nyní, pojďme pochopit an příklad pro Cypřiš příslušenství. Přihlásíme se k URL pomocí uživatelského jména a hesla. Uložme tedy hodnoty uživatelského jména a hesla do souboru.

Vytvořme soubor s názvem credentials.json pod složkou příslušenství. Proměnné budeme definovat ve formátu JSON.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
opravit 1
Příklad souboru přípravku

Přístup k hodnotám ze souboru Fixture do testovacího souboru

Protože jsme definovali naše hodnoty JSON v souboru credentials.json souboru, uvidíme, jak se k nim můžeme dostat v našem testovacím souboru pomocí přípravků Cypress.

K údajům o zařízení budeme přistupovat pomocí this klíčové slovo v předháku

description("Příklad Cypress Fixtures", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })

Ve výše uvedeném příkladu přistupujeme k našemu souboru JSON přes cy.fixture('pověření'). Protože náš název souboru JSON je credentials.json, my jsme předání názvu souboru v cy.fixture (). Nyní používáme koncept aliasů a definujeme naše data jako testovací data. S proměnnou testovací data, můžeme použít hodnoty uživatelského jména a hesla v našem testovacím souboru

description("Příklad Cypress Fixtures", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Login with valid credentials" ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Password]').clear() cy.get('[id=Password]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('be.equal', this.testdata.adminUrl) }); });

Jak vidíte výše, v .type() předáváme hodnotu z našeho souboru credentials.json jako this.testdata.username. Podobně pro heslo přistupujeme k hodnotě pomocí toto.heslo.testdata. Pro adresu URL používáme stejný způsob jako uživatelské jméno a heslo.

Když spustíme testovací případ, můžete vidět vytištěnou hodnotu na řídicím panelu. Tímto způsobem jsme provedli náš testovací případ pomocí Cypress Fixtures

opravit 2
Výsledek testu přípravku

Cypress více zařízení

V této části porozumíme tomu, jak používat Cypress Fixtures s více soubory zařízení.

Pokud například chceme pro stejný testovací soubor použít různá data zařízení, potřebujeme pro přihlašovací stránku ověřit dvě sady přihlašovacích údajů, jak můžeme získat přístup k souborům?

Jedním ze způsobů je napsat více it bloky, které budou znovu a znovu replikovat stejný kód. Na druhou stranu můžeme použít Cypress přípravky pro přístup k různým testům data v souboru spec. Podívejme se, jak toho můžeme dosáhnout pomocí přípravků Cypress

Již máme soubor s přípravkem nazvaný credentials.json.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Nyní vytvoříme další soubor zařízení s názvem userData.json kde budeme používat jiné neplatné uživatelské jméno a heslo.

{
    "username" : "[email protected]",
    "password" : "user",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Nyní se podívejme, jak můžeme získat přístup ke dvěma různým datům v našem testovacím souboru.

Budeme refaktorovat stejný testovací soubor pomocí podmínky použití dvou různých souborů přípravku.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] description('Automation Test Suite - Fixtures', function () { //procházení obou zařízení testValueFixtures.forEach((fixtureData) => { description(fixtureData.context, () => { // přístup k testovacím datům ze souboru zařízení before(function () { cy. fixture(fixtureData.name).then(function (testData) { this.testData = testData; }) }) it("login", function () { cy.visit('https://admin-demo.nopcommerce.com /admin/') cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testData.username) cy.get('[id= Password]').clear() cy.get('[id=Password]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
opravit 3
Příklad přístupu ke dvěma datům zařízení

Zpočátku vytváříme proměnnou tzv testValueFixtures as řada kde vytváříme kontext dvou souborů příslušenství. V prvním kontextu předáváme jméno jako „pověření"a druhý jako"uživatelská data' , protože představují názvy našich souborů JSON, kde máme definovanou naši hodnotu.

Zadruhé procházíme obě proměnné fixture v bloku description. A jak jsme diskutovali dříve, přistupujeme k datům před použitím bloku .this()

Zbytek kódu je stejný, kde předáváme data v cy.get()

Když spustíme náš test, poběží ve dvou sadách, kde první případ projde platnými přihlašovacími údaji a druhý selže kvůli neplatným přihlašovacím údajům

opravit 4
Upevnění pomocí prvního souboru zařízení

Jak můžete vidět výše na snímku, první testovací případ prošel a zadal hodnotu z prvního souboru přípravku credentials.json

opravit 5
Příklad zařízení pomocí druhého souboru zařízení

Jak můžete vidět na výše uvedeném snímku obrazovky, test selhal a předané hodnoty jsou ze souboru druhého zařízení userData.json

Můžete si také zobrazit, jak zapisovat přípravky Cypress pomocí objektového modelu stránky zde