Как поделиться значениями переменных в Cypress - PullRequest
0 голосов
/ 17 мая 2019

Я учусь использовать Кипарис .В настоящее время у меня есть несколько файлов спецификаций, структурированных следующим образом:

/cypress
  /integration
    /child-a
      list.spec.js
      item.spec.js
    /child-b
      list.spec.js
      item.spec.js
    index.spec.js

Когда начинается тестовый запуск, я хочу установить значение один раз.Это значение исходит от веб-API.По этой причине я не хочу установить это значение перед каждым тестом.Я также не хочу устанавливать его для каждого файла.Вместо этого я хочу установить его только один раз.Затем я хочу использовать это значение во всех тестах, запущенных во всех файлах spec.js.

Есть ли способ сделать это в Cypress?Вроде как beforeAll или beforeSession?Или есть какой-то другой рекомендуемый способ?Самым близким, что я видел, был [before][2] крючок.Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Кипарисное приспособление должно работать на вас!

https://docs.cypress.io/api/commands/fixture.html#Syntax

// cypress/fixtures/user.json
{
  "username": "tj",
  "password": "password"
}
// cypress/integration/login_test.js

cy.fixture('users').as('usersJson')  // load data from users.json

0 голосов
/ 17 мая 2019

Выполнение кода один раз перед всеми спецификациями:

Вы можете использовать хук before, который вы упомянули в cypress/support/index.js .. Вот что говорится в моем локальном файле suppost / index.js (Cypress версия 3.2)

    // This example support/index.js is processed and
    // loaded automatically before your test files.
    //
    // This is a great place to put global configuration and
    // behavior that modifies Cypress.
    //
    // You can change the location of this file or turn off
    // automatically serving support files with the
    // 'supportFile' configuration option.
    // You can read more here:
    // https://on.cypress.io/configuration

Совет : Я использую ту же самую ловушку для выполнения скрипта, который сбрасывает состояние моей БД перед тестами. Я не смог успешно запустить некоторые операторы JS здесь, поэтому я поместил их в отдельный скрипт Node и выполнил его с cy.exec(). Я думаю, вы могли бы вывести значение webapi, которое вам нужно из этого скрипта. cy.exec () имеет средство для чтения вывода команд, которые он выполняет:

before(() => {
  cy.exec("node import-ui-test-data-to-firestore.js", {
    failOnNonZeroExit: false
  });
});


Совместное использование переменной между спецификациями: Я не могу действительно дать совет по совместному использованию переменных во всех спецификациях, но вы можете найти это полезным - https://docs.cypress.io/guides/core-concepts/variables-and-aliases.html#Sharing-Context
...