Jedną z najlepszych praktyk w automatyzacji testów jest oddzielenie danych testowych od plików testowych. Ten aspekt jest jednym z podstawowych wymagań podczas projektowania frameworka testowego. Cypress pomaga nam oddzielić dane testowe za pomocą Cyprys Lampy. W tym temacie będziemy dyskutować o Oprawy cyprysowe z praktyczną implementacją i przykładami w czasie rzeczywistym
Spis treści
- Co to jest oprawa w Cypress?
- Jak wykorzystać oprawy Cypress w testach?
- Jak odczytać dane z urządzeń w Cypress?
- Uzyskiwanie dostępu do wartości z pliku urządzeń do pliku testowego
- Cyprys Wiele urządzeń
Co to jest oprawa w Cypress?
Można użyć cyprysowych urządzeń dane źródłowe z plików zewnętrznych. Oprawy w Cypressie pomogą ci odczyt lub zapis do plików. Jednym z popularnych frameworków w automatyzacji testów jest platforma Data-driven, w której oddzielamy dane od plików testowych. Zazwyczaj przechowujemy dane w zewnętrznym pliku, takim jak Excel i odczytujemy je za pomocą zewnętrznych bibliotek. Cypress udostępnia nam tę samą funkcję do odczytywania danych z plików.
Cypress udostępnia nam folder o nazwie armatura, gdzie możemy tworzyć pliki JSON i odczytywać z nich dane, skąd możemy czytać te pliki w wielu plikach testowych. Będziemy przechowywać dane jako kluczowa wartość sparuj i uzyskaj do nich dostęp.
Jak używać urządzeń cyprysowych w testach?
Możemy uzyskać dostęp do urządzeń Cypress za pomocą następującej składni podanej poniżej
cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)
Zrozumiemy parametry, które można przekazać w urządzeniach
ścieżka pliku – ścieżka do miejsca, w którym zapisałeś swoje dane testowe
kodowanie – Kodowanie używane podczas korzystania z pliku. Niektóre kodowania to ascii, base64, hex, binarne itp.
Opcje – W opcjach możemy przekazać Timeout odpowiedź. Jest to określenie limitu czasu na rozwiązanie cy.oprawa()
Jak odczytać dane z Urządzeń w Cypress?
Będziemy definiować dane testowe w pliku pod osprzęt teczka. Będziemy uzyskiwać dostęp do danych testowych z pliku JSON w skrypcie testowym za pomocą osprzętu Cypress.
Teraz zrozummy przykład dla Cyprysa armatura. Będziemy logować się do adresu URL przy użyciu nazwy użytkownika i hasła. Przechowujmy więc wartości nazwy użytkownika i hasła w pliku.
Stwórzmy plik o nazwie poświadczenia.json w folderze osprzętu. Będziemy definiować zmienne w formacie JSON.
{
"username" : "admin@yourstore.com",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Dostęp do wartości z pliku Fixture do pliku testowego
Ponieważ zdefiniowaliśmy nasze wartości JSON w poświadczenia.json pliku, zobaczymy, jak możemy uzyskać do nich dostęp w naszym pliku testowym za pomocą osprzętu Cypress.
Uzyskamy dostęp do danych urządzeń za pomocą this
słowo kluczowe w haczyku przed
description("Przykład urządzeń cyprysowych", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })
W powyższym przykładzie uzyskujemy dostęp do naszego pliku JSON przez cy.fixture('poświadczenia'). Ponieważ nasza nazwa pliku JSON to poświadczenia.json, jesteśmy przekazanie nazwy pliku w cy.fixture(). Teraz używamy koncepcji aliasów i definiujemy nasze dane jako dane testowe. Ze zmienną dane testowe, możemy użyć wartości nazwy użytkownika i hasła w naszym pliku testowym
description("Przykład urządzeń cyprysowych", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Zaloguj się z prawidłowymi danymi uwierzytelniającymi ", function() { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Hasło]').clear() cy.get('[id=Hasło]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('be.equal', this.testdata.adminUrl) }); });
Jak widać powyżej, w .type()
przekazujemy wartość z naszego pliku poświadczenia.json jako this.testdata.nazwa_użytkownika. Podobnie dla hasła uzyskujemy dostęp do wartości za pomocą to.dane.testowe.hasło. W przypadku adresu URL używamy tego samego sposobu, co nazwę użytkownika i hasło.
Kiedy uruchamiamy przypadek testowy, możesz zobaczyć, jak wartość jest drukowana na pulpicie nawigacyjnym. W ten sposób wykonaliśmy nasz przypadek testowy za pomocą Cypress Fixtures

Cyprys wiele urządzeń
W tej sekcji zrozumiemy, jak używać urządzeń Cypress z wieloma plikami urządzeń.
Jeśli na przykład chcemy użyć różnych danych urządzeń dla tego samego pliku testowego, musimy zweryfikować dwa zestawy danych uwierzytelniających dla strony logowania, jak możemy uzyskać dostęp do plików?
Jednym ze sposobów jest pisanie wielu it bloki, które będą wielokrotnie replikować ten sam kod. W drugą stronę możemy użyć Oprawy cyprysowe umożliwiające dostęp do różnych testów dane w pliku spec. Zobaczmy, jak możemy to osiągnąć za pomocą osprzętu Cypress
Mamy już plik urządzeń o nazwie poświadczenia.json.
{
"username" : "admin@yourstore.com",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Teraz stwórzmy kolejny plik urządzeń o nazwie dane użytkownika.json gdzie użyjemy innej nieprawidłowej nazwy użytkownika i hasła.
{
"username" : "user@yourstore.com",
"password" : "user",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Zobaczmy teraz, jak możemy uzyskać dostęp do dwóch różnych danych w naszym pliku testowym.
Dokonamy refaktoryzacji tego samego pliku testowego pod warunkiem użycia dwóch różnych plików urządzeń.
const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] define('Automation Test Suite - Fixtures', function () { //przechodzenie w pętlę przez oba urządzenia testValueFixtures.forEach((fixtureData) => { description(fixtureData.context, () => { // dostęp do danych testowych z pliku urządzeń przed(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= Hasło]').clear() cy.get('[id=Hasło]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })

Początkowo tworzymy zmienną o nazwie elementy testoweValue jako szyk gdzie tworzymy kontekst dwóch plików urządzeń. W pierwszym kontekście przekazujemy nazwę jako „kwalifikacje' a drugi jako 'dane użytkownika' , ponieważ reprezentują nazwy naszych plików JSON, w których mamy zdefiniowaną wartość.
Po drugie, przechodzimy przez obie zmienne urządzeń w opisie bloku. I jak omówiliśmy wcześniej, uzyskujemy dostęp do danych przed użyciem bloku .this()
Reszta kodu jest taka sama, gdzie przekazujemy dane w cy.get()
Kiedy wykonamy nasz test, uruchomi się on w dwóch zestawach, w których pierwszy przypadek przejdzie z ważnymi danymi uwierzytelniającymi, a drugi zakończy się niepowodzeniem z powodu nieprawidłowych poświadczeń

Jak widać na powyższym zrzucie, pierwszy przypadek testowy przeszedł pomyślnie i wprowadzono wartość z pierwszego pliku urządzenia poświadczenia.json

Jak widać na powyższym zrzucie ekranu, test zakończył się niepowodzeniem, a przekazane wartości pochodzą z drugiego pliku urządzeń dane użytkownika.json
Możesz także zobaczyć, jak pisać urządzenia Cypress za pomocą Page Object Model tutaj