Cypress Fixtures: 5 Fakta Penting yang Harus Anda Ketahui

Salah satu praktik terbaik dalam otomatisasi pengujian adalah memisahkan data pengujian dari file pengujian. Aspek ini merupakan salah satu persyaratan utama saat merancang kerangka uji. Cypress membantu kami untuk memisahkan data uji dengan Cypress perlengkapan. Pada topik kali ini kita akan membahas tentang Perlengkapan Cypress dengan implementasi langsung dan contoh waktu nyata

Daftar Isi

Apa itu perlengkapan di Cypress?

Perlengkapan Cypress dapat digunakan sumber data dari file eksternal. Perlengkapan di Cypress membantu Anda untuk membaca dari atau menulis ke dalam file. Salah satu kerangka kerja populer dalam otomatisasi pengujian adalah kerangka kerja berbasis data di mana kami memisahkan data dari file uji. Kami biasanya menyimpan data dalam file eksternal seperti Excel dan membacanya menggunakan perpustakaan eksternal. Cypress memberi kita fitur yang sama untuk membaca data dari file.

Cypress memberi kami folder bernama perlengkapan, tempat kita dapat membuat file JSON dan membaca data darinya tempat kita dapat membaca file tersebut dalam beberapa file pengujian. Kami akan menyimpan data sebagai nilai kunci memasangkan dan mengaksesnya.

Bagaimana cara menggunakan Cypress Fixtures dalam Tes?

Kami dapat mengakses perlengkapan Cypress melalui sintaks berikut yang diberikan di bawah ini

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

Kami akan memahami parameter yang dapat dilewati dalam perlengkapan

jalur file – jalur ke tempat Anda menyimpan data pengujian

encoding – Encoding yang digunakan saat menggunakan file. Beberapa pengkodean adalah ascii, base64, hex, biner dll

Pilihan – Dalam opsi, kita dapat melewati batas waktu tanggapan. Ini untuk menentukan batas waktu untuk diselesaikan cy.fixture()

Bagaimana cara membaca data dari Fixtures di Cypress?

Kami akan mendefinisikan data uji dalam file di bawah fitting map. Kami akan mengakses data pengujian dari file JSON dalam skrip pengujian menggunakan perlengkapan Cypress.

Sekarang, mari kita pahami dan contoh untuk Cypress perlengkapan. Kami akan masuk ke url menggunakan nama pengguna dan kata sandi. Jadi mari kita simpan nilai username dan password dalam sebuah file.

Mari kita buat file bernama kredensial.json di bawah folder perlengkapan. Kami akan mendefinisikan variabel dalam format JSON.

{
    "username" : "admin@yourstore.com",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Contoh file perlengkapan

Mengakses nilai dari file Fixture ke file tes

Karena kami telah mendefinisikan nilai JSON kami di kredensial.json file, kita akan melihat bagaimana kita dapat mengaksesnya di file pengujian kita menggunakan perlengkapan Cypress.

Kami akan mengakses data pertandingan menggunakan this kata kunci di kait sebelum

deskripsikan("Contoh Jadwal Cypress", function () { sebelum(fungsi () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })

Dalam contoh di atas, kami mengakses file JSON kami melalui cy.fixture('kredensial'). Karena nama file JSON kami adalah kredensial.json, Kita meneruskan nama file di cy.fixture(). Sekarang kita menggunakan konsep alias dan mendefinisikan data kita sebagai data percobaan. Dengan variabel data percobaan, kita dapat menggunakan nilai nama pengguna dan kata sandi di file pengujian kami

jelaskan("Contoh Jadwal Cypress", function () { sebelum(fungsi () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Login dengan kredensial yang valid ", 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] ').klik(); cy.url().should('be.equal', this.testdata.adminUrl) }); });

Seperti yang Anda lihat di atas, di .type() kami meneruskan nilai dari file kredensial.json kami sebagai this.testdata.namapengguna. Demikian pula, untuk kata sandi kami mengakses nilai menggunakan this.testdata.password. Untuk url, kami menggunakan cara yang sama seperti nama pengguna dan kata sandi.

Saat kami menjalankan test case, Anda dapat melihat nilai tercetak di dasbor. Dengan cara ini, kami telah menjalankan test case kami menggunakan Cypress Fixtures

Hasil tes perlengkapan

Beberapa Perlengkapan Cypress

Di bagian ini, kita akan memahami cara menggunakan Cypress Fixtures dengan beberapa file fixture.

Jika kita ingin menggunakan data fixture yang berbeda untuk file pengujian yang sama, misalnya, ada dua set kredensial yang perlu kita verifikasi untuk halaman login, bagaimana kita bisa mengakses file tersebut?

Salah satu caranya adalah dengan menulis banyak it blok yang akan mereplikasi kode yang sama lagi dan lagi. Cara lain, kita bisa menggunakan Perlengkapan Cypress untuk mengakses tes yang berbeda data dalam file spesifikasi. Mari kita lihat bagaimana kita bisa mencapainya menggunakan perlengkapan Cypress

Kami sudah memiliki file perlengkapan yang disebut kredensial.json.

{
    "username" : "admin@yourstore.com",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Sekarang mari kita buat file fixture lain bernama userData.json di mana kami akan menggunakan nama pengguna dan kata sandi yang tidak valid yang berbeda.

{
    "username" : "user@yourstore.com",
    "password" : "user",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Sekarang mari kita lihat bagaimana kita dapat mengakses dua data yang berbeda dalam file pengujian kita.

Kami akan refactor file tes yang sama menggunakan kondisi menggunakan dua file fixture yang berbeda.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] menjelaskan('Automation Test Suite - Fixtures', function () { //mengulangi kedua fixtues testValueFixtures.forEach((fixtureData) => { mendeskripsikan(fixtureData.context, () => { // mengakses data pengujian dari file fixture sebelum(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= Kata sandi]').clear() cy.get('[id=Kata Sandi]').type(this.testData.password) cy.get('[type=kirim]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
Mengakses dua contoh data perlengkapan

Awalnya, kami membuat variabel yang disebut testValueFixtures sebagai susunan di mana kita membuat konteks dari dua file perlengkapan. Dalam konteks pertama, kami memberikan nama sebagai 'Surat kepercayaan' dan yang kedua sebagai 'data pengguna' , karena mereka mewakili nama file JSON kami di mana kami memiliki nilai yang ditentukan.

Kedua, kita mengulang kedua variabel fixture di blok deskripsi. Dan seperti yang telah kita bahas sebelumnya, kita mengakses data sebelum memblokir menggunakan .this()

Sisa kodenya sama, di mana kita melewatkan data di cy.get()

Saat kami menjalankan pengujian kami, itu akan berjalan dalam dua set di mana kasus pertama lulus dengan kredensial yang valid dan yang kedua gagal karena kredensial yang tidak valid

Fixture menggunakan file fixture pertama

Seperti yang Anda lihat di atas dalam snapshot, kasus uji pertama telah berlalu dan telah memasukkan nilai dari file perlengkapan pertama kredensial.json

Contoh perlengkapan menggunakan file perlengkapan kedua

Seperti yang Anda lihat pada tangkapan layar di atas, tes telah gagal dan nilai yang diberikan berasal dari file perlengkapan kedua userData.json

Anda juga dapat melihat cara menulis perlengkapan Cypress menggunakan Model Objek Halaman disini

Gulir ke Atas