13 příkladů cypřiše

В прошлой статье мы узнали, что такое Cypřiš, его архитектура, процесс установки и принеовки и принеодиве ходимые для установки. Однако, прежде чем мы начнем писать наши тесты, нам нужно установить Cypřiš. Нажмите zde чтобы получить подробные инструкции по установке Cypřiš.

Пример кипариса

Tento článek bude diskutovat Пример кипариса, například JSON, переменные и псевдонимы, а также как писать тестовые примеры. Итак, приступим.

Пример кипариса
Пример кипариса

Obsah

Například Cypress JSON

Первоначально, когда мы открываем наш Cypress Test Runner, cypress.json файл конфигурации создан. Мы обычно храним фрагмент кода, который позволяет реализовать и сохранятвар некотовотовор огают программе или коду автоматизации выполнять. Точно так же Cypress также имеет файл JSON для хранения любых значений, которые мсветревей йств конфигурации.

Давайте посмотрим на некоторые примеры, которые мы можем настроить в нашем Cypress JSON .

Cypřiš уже имеет назначенные значения конфигурации по умолчанию. Есть несколько вариантов, которые мы можем настроить в соответствии с нашими треяманна Например, мы можем предоставить baseURL недвижимость в нашем cypress.json файл. Итак, каждый раз, когда мы запускаем скрипт, baseURL устанавливается и срабатывает.

MožnostVýchozí hodnotypopis
základní URLnulováЭтот вариант можно использовать как URL префикс для cy.request () or cy.visit () týmy.
klikněte na ForFileChangespravduПо умолчанию для этого параметра установлено значение true. Он следит за файлами на предмет изменений a перезапускает их при внесениихе

Žádný приведен снимок, на котором мы изменили свойства baseURL a watchForFileChanges в нашем Cypress.json .

Примечание: мы обсудим все параметры v Cypress Configuration как отдельную тему позже.

Пример кипариса
файл cypress.json

Открыть Cypřiš

Ранее мы видели, как создать проект Cypress. Здесь мы увидим, как открыть a запустить средство запуска Cypress Test. Итак, приступим!

Если вы установили Cypress через npm, то он был установлен v каталоге ./node_modules. Таким образом, мы можем открыть наш Запуск тестов Cypřiš путем передачи команды npmКорень нашего каталога проектов.

Мы можем открыть Cypřiš одним из следующих способов

1. давая команду полного пути

./node_modules/.bin/cypress open

2. с помощью ярлыка для npm bin

$(npm bin)/cypress open

3. с помощью npx

Здесь npx поддерживается только с npm> v5.2, или мы можем установить его отдельно.

npx cypress open

4. используя пряжу

yarn run cypress open

Теперь посмотрим, как открыть Cypřiš, передав команду полного пути в нашем терминале.

1. Вы должны передать команду, указанную выше в пункте 1, и вы увидите следуюещемернервиюеще

Snímek obrazovky 2021 07 15 v 12.33.45:XNUMX:XNUMX
Открытие Cypřiš v Терминале

2. через мгновение мы youвидим запуск програмы cypress testovací běžec и сможем увидеть. После того, как средство запуска тестов было запущено, вы могли увидеть нестольрикововидеть нестольрикововескольково Cypřiš создал тестовую папку в корне нашего проекта, которая помогает нам с базовоййй нам с базовоййпина естовых примеров.

Snímek obrazovky 2021 07 15 v 12.34.11:XNUMX:XNUMX
Файлы примеров v Test Runner

Теперь вернемся к VS Code. Во-первых, вы можете просмотреть некоторые заполненные структуры папок. Теперь давайте разберем каждую структуру папок и рассмотрим их подробно.

Структура папок v Cypressu

Как мы видим, Cypress создал структуру папок в нашем редакторе кода. Обсудим их подробно.

Snímek obrazovky 2021 07 19 v 12.06.47:XNUMX:XNUMX
Podívejte se na cypřiš
  1. armaturu – Папка прибора содержит статические данные, которые можно повторно использоватокарва Одна из лучших практик – это не использовать жесткие данные (také как учетныесесотные данные v наших тестах. Вместо этого мы получаем к ним доступ через файл JSON, CSV nebo HTML. Мы должны создать наши файлы данных в папке příslušenství. Мы получаем доступ к эtumu файлу в нашем тесте, используя cy. směs příkaz.
  2. integrace – В этой папке мы записываем фактические тестовые случаи, которые мы мыбайсномаземения ции. Внутри папки интеграции мы можем создать несколько папок и множество тестоповово тестовых v зависимости от требований нашего проекта. Вы также можете увидеть некоторые файлы спецификаций по умолчанию, созденернерние
  3. Плагины – Папка плагинов содержит файлы, которые позволяют вам нажимать, откятватьт реним ее поведение Cypřiš. С помощью плагинов вы можете написать собственный код, который поматножет вапом ом ды, которые имеют прямой доступ к каждой части (до или после выполнения) вашарей По умолчанию Cypress создает плагины по этому пути. cypress/plugin/index.js
  4. Podpora -Под папкой поддержки у нас есть файлы, которые помогают нам предоставлятинм предоставлятинме vыe методы. Перед каждым запуском спецификации Cypress запускает папку Support. Таким образом, нет необходимости импортирvojeva Эта папка – подходящее место для добавления многоразовых методохов илнулиголобами димых для использования поверх всех других файлов спецификаций.
  5. Узловые модули – В этой папке находятся все установленные нами пакеты npm. Модули узлов важны для запуска любого проекта узла. Все функции, которые есть в нашем проекте Cypřiš, написаны внутри нашей папки модулей модулей Мы не будем изменять какие-либо файлы внутри узловых модулей.
  6. Кипарис.json – Мы можем добавить несколько конфигураций в наш Кипарис.json файл. Например, мы можем добавить переменные среды, baseURL, таймауты или любые прутруббыпрутругбыпрягерепы еделить параметры по умолчанию v файле конфигурации Cypřiš.

Переменные и псевдонимы

Мы подробно обсудим переменные и псевдонимы в Cypress.

Поскольку мы понимаем и изучаем Cypřiš, нам может быть трудно понять Асинхронный API природа Кипариса. Но, как мы видим множество примеров в будущем, это станет проще простого. Многие современные браузеры используют асинхронные API, a даже основные модуслимодулисаронпинис м. Более того, асинхронный код присутствует везде в коде Javascript. Поэтому мы будем изучать возвращаемые значения в Cypress.

Возвращаемые значения в Cypress

Все команды Cypřiš fronta и najetých kilometrů asynchronně. Proto my не может назначать какие-либо возвращаемые значения или взаимодействовать с нимые любых команд Cypřiš. Мы увидим небольшой пример того же.

const button = cy.get("login-btn");  //this command is to get the element with the button attribute

button.click()

Uzávěry

Мы не можем получить доступ к атрибутам кнопки с помощью упомянутой выѼан . Вместо этого мы можем выдавать команды Cypřiš, используя .then (). Мы называем эto укупорочные.

.потом()

.pak () помогает вам получить доступ к потоку, полученному из предыдущей ко. Если вы поняли родные обещания, точно так же .then () работает с Cypřiš. Мы также можем вкладывать различные команды внутрь .then (). Каждая вложенная команда может обращаться к предыдущей команде в цикле. Мы увидим это на примере.

cy.get('login').then(($btn) => {

  // store the button's text
  const buttonText = $btn.text()

  // we are comparing the two buttons' text
  // and ensuring they are different
  cy.get('login').should(($btn2) => {
    expect($btn2.text()).not.to.eq(buttonText)
  })
})

Použili jsme Uzávěry в приведенном выше примере, что позволяет нам сохранить ссылку. на предыдущуюевку

Proměnné

Обычно мы присваиваем значение переменной. Но в Cypress мы почти не используем const, varA let. Когда мы используем замыкания, мы можем получить доступ к полученныЊаказнбанныЊеказанба переменной.

Но есть некоторые случаи, когда мы можем объявить переменную, когда изменение состояния объекта (изменяемые объекты). ne й, чтобы сравнить его со следующим значением. Давайте рассмотрим пример для этого.

<button>increment</button>

You clicked button <span id="num">0</span> times

Здесь диапазон со счетом 0 продолжает увеличиваться каждый раз, когда продолжает увеличиваться каждый раз, когда помыкунана Таким образом, объект кнопки имеет тенденцию каждый раз менять свое состояние.

Теперь давайте посмотрим, jak jsem мыжем присвоить это переменной в нашем коде

cy.get('#num').then(($span) => {
  // we are capturing the number by assigning it to a variable
  const num1 = parseFloat($span.text())

  cy.get('button')
    .click()  //we have clicked the button once
    .then(() => {
      // we are capturing the number again by assigning it to another variable
      const num2 = parseFloat($span.text())

      // we are ensuring that num1+1 is equal to num2
      expect(num2).to.eq(num1 + 1)
    })
})

Поскольку span меняет свое состояние каждый раз, когда мы нажимаем кнопку, метиьепку, метиьепервожервой менной, чтобы сравнить его текущее a предыдущее состояние. Только в случае изменяемых объектов нам потребуются переменные, и испольезованные const эto хороший подход.

Псевдонимов

Ранее мы видели, что такое переменные и их ограничения в Cypress. Чтобы преодолеть это ограничение, используются псевдонимы. Псевдоним – одна из мощных конструкций Cypřiš. Мы подробно рассмотрим это на примерах.

Как правило, псевдонимы могут помочь вам работать как переменная. Однако в некоторых случаях нам может помочь псевдоним вместо переменной.

1. Повторное использование элементов DOM

Мы можем использовать псевдонимы для элементов DOM, а затем обращаться к нопом зования. Псевдонимы также преодолевают ограничения .потом() příkaz.

2. Совместное использование контекста

Проще говоря, совместное использование контекста – это совместное использованиекие ожут естами. Основной вариант использования для совместного использования контекста имеетст де cy.fixture – который должен загрузить фиксированный набор данных в файл.

Как получить доступ к псевдонимам?

Здесь мы увидим, как получить доступ к псевдонимам. Мы будем использовать .as() команда, чтобы назначить элемент для последующего использования. Обязательный параметр – эto Přezdívka. Имя псевдонима используется в качестве ссылки в cy.get() or cy.wait() pomocí @ приставка.

Мы рассмотрим пример того, как получить доступ к псевдонимам.

cy.get('#user_login').as('username')
cy.get('@username').type('[email protected]')

В первой строке мы получаем идентификатор user_login a DOM. Затем мы используем .as() и объявление с именем пользователя. Во второй строке мы получаем доступ к нашему псевдониму с помощью @ символ a выполнение napsat akce.

Пример кипарисового теста

Мы начнем писать наш первый тестовый пример с Cypřiš. Это очень просто и легко. Но перед этим разберемся с конструкциями теста Cypress.

Основные конструкции Cypřiš

Cypřiš принял синтаксис Mocha для своих тестовых примеров a использует все параметры, которыHA Ниже приведены основные конструкции Cypřiš, которые обычно используются в нах.правих тестовы

  • Описывать() – объединяет все тестовые примеры в один более крупный тест и группирует их вместе. Он принимает два параметра – описание теста и функцию обратного вызова.
  • Эto() – мы пишем отдельные тестовые случаи в нашем блоке it (). Этот блок также принимает два параметра: что делает тест, что делает тест, и второй параметр – этоцовофун
  • после() – это выполняется после всех тестов в файле спецификации.
  • po každém () – это запускается после каждого отдельного тестового примера.
  • перед() – запускается перед всеми тестами в файле спецификации.
  • před každým () – выполняется перед каждым отдельным тестом.

Jak jste na tomto místě?

Прежде чем мы начнем, мы должны знать, что такое тестовый пример, написатяге написатя е азового тестового примера.

1. Předpoklad – Состояние приложения, которое мы собираемся тестировать.

2. účinek – Выполняем какое-то действие с приложением.

3. Schválení – Мы подтверждаем или подтверждаем изменившееся поведение в отношении нашийх

Budeme zvažovat ЛамдаГики приложение для наших тестовых примеров. Используя ту же процедуру, мы рассмотрим автоматизацию следующего сценария

1. Посетите веб-сайт https://lambdageeks.com/

2. Проверьте, является ли заголовок “Домой” – любители Lambda
Кипарис использует cy как определение его типа. Мы добавим cy команда для вызова любых методов.
Во-первых, давайте создадим новый файл в нашем редакторе кода.

1. Создайте новую папку с именем Demonstrace v папке интеграции.

Snímek obrazovky 2021 07 22 v 3.32.16:XNUMX:XNUMX
Vytvoření nové složkyr

2. В папке Demo создайте новый файл. образец.js. В этот файл мы напишем наш первый тестовый пример.

Snímek obrazovky 2021 07 22 v 3.32.35:XNUMX:XNUMX
Создание нового файла

Теперь приступим к написанию тестовых примеров!

1. 1. Сначала мы зайдем на страницу, используя визит() Dům v Cypřiši. Эта команда перейдет к предоставленному нами URL. Мы заключим их в блоки popsat () a to ().

//type definition for Cypress object 'cy'
/// 

describe("Testing the application", function() {
    it("launch the application", function() {
        // visit the lambdageeks page
        cy.visit('https://lambdageeks.com/')

2. Как только приложение откроется, мы проверим заголовок с помощью get() Dům v Cypřiši .get() извлекает все селекторы css a DOM.

Мы получаем доступ к заголовку, используя title() метод, и мы утверждаем, что использование библиотеки Chai с командой by měl, передаверя й, короче eq. Второй параметр – это ожидаемая строка.

 cy.title().should('eq','Home - Lambda Geeks')

Ano! С помощью двух простых шагов мы написали наш тестовый пример Cypress.

Вот полный код нашего тестового примера

//type definition for Cypress object 'cy'
/// <reference types="cypress" />

describe("Testing the application", function() {
    it("launch the application", function() {

        // visit the lambdageeks page
        cy.visit('https://lambdageeks.com/')

        // validate the title
        cy.title().should('eq','Home - Lambda Geeks')
       
    });
});
Snímek obrazovky 2021 07 22 v 12.58.28:1:XNUMX upraven XNUMX
Пример кипариса: Первый тестовый пример

Cypřiš пример входа в систему

Мы увидим примеры того, как автоматизировать страницу входа в систему с поЎощщь Как мы видели ранее, написать тестовый пример на Cypress просто. Теперь давайте перейдем к установке значений в текстовом поле и утверждениях.

1. Заходим на сайт https://demo.applitools.com/ přes cy.visit příkaz.

 cy.visit('https://demo.applitools.com/')

2. Введите имя пользователя v поле имени пользователя, используя typ команду. Мы передадим имя пользователя виде строки в типе в качестве параметра.

 cy.get('#username').type('test123')

3. Аналогично пишем ту же команду для ввода пароля

 cy.get('#password').type('123')

4. Теперь мы нажимаем кнопку входа в систему, используя click() Dům v Cypřiši.

cy.get('#log-in').click();

5. После авторизации мы попадаем на страницу приложения. Итак, мы утверждаем, что URL-адрес имеет /app расширение с помощью .include() ключевое слово в chai. Первый параметр by měl - это ключевое слово, которое мы утвержжа р р р'л.

cy.url().should('include', '/app')

Мы написали полный код для функции входа в систему за пять простых шагов. Ниже приведен полный код для справки.

//type definition for Cypress object 'cy'
/// <reference types="cypress" />

describe("Testing the application", function() {
    it("should login with username and password", function() {

        // visit the lambdageeks page
        cy.visit('https://demo.applitools.com/')

        cy.get('#username').type('test123')

        cy.get('#password').type('123')

        cy.get('#log-in').click();

        cy.url().should('include', '/app')

    });
});
Snímek obrazovky 2021 07 22 ve 4.49.42:XNUMX:XNUMX upraven
Тестовый пример входа

Решения типичных проблем при запуске Cypress a FAQ

При запуске Cypřiš мы можем столкнуться с некоторыми общими проблемами. Мы обсудим некоторые общие вопросы.

1. Не удается найти команду Cypress во время команды Open Cypress

После установки мы должны передать команду otevřený cypřiš из корня каталога проекта. Например, вы создали проект CypressProject; вы должны пройти npm init команду, перейдя в папку CypressProject. Вы можете перемещаться, введя следующую команду в терминале

cd CypressProject

Как только вы окажетесь в корне проекта, передайте npm init команда для загрузки зависимостей.

Теперь, чтобы открыть Cypřiš, некоторые люди пытаются перейти к /node_modules папка a ./bin а затем передайте команду открытия кипариса. Однако это не работает. Поэтому вместо этого дайте всю команду open из корня каталога проекта, чтобты открыта.

./node_modules/.bin/cypress open

Также будьте осторожны с косой чертой '/ '. Всегда предоставляйте эto »/ ' открыть Cypřiš.

2. cypřiš не может быть загружен, потому что запуск скриптов отключен на этом systém

Когда вы устанавливаете Cypress ve Windows, вы можете иногда столкнуться с указанной выше ошибка Это потому, что из-за исключения безопасности. Мы можем решить эtu ошибку, передав следующую команду v PowerShell.

Set-ExecutionPolicy RemoteSigned

Действия по воспроизведению:

  • Spusťte PowerShell
  • Запустите эtu команду Set-ExecutionPolicy RemoteSigned
  • Typ Yes
  • Теперь откройте Кипарис, пройдя ./node_modules/.bin/cypress open. Test Runner откроется сейчас.

FAQ

1. Какие операционные системы поддерживает Cypress?

Cypřiš поддерживает Mac, WindowsA Linux операционных систем.

2. Поддерживает ли Cypress автоматизацию v собственных мобильных приложениях?

Cypřiš никогда не сможет работать с родным мобильным приложением. Но мы можем тестировать мобильные приложения, написанные в браузере, напримерия

3. Chcete-li použít Cypress na novém Javascriptu?

Ne! Cypřiš может взаимодействовать с любым веб-браузером, написанным на таких язкаках, PHP, C, Ruby, # No. Žádné komentáře nejsou dostupné na Javascriptu. В противном случае Cypřiš может взаимодействовать с любым интерфейсом, серверной йнтерфейсом, серверной мворком.