Как повторно использовать функцию из существующего теста Cypress и вызывать ее в новом? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующая функция, которая находится внутри родительской функции.

        function generate_random_string(string_length) { // A function that creates a random string and will later pass this to a variable
            let random_string = '';
            let random_ascii;
            for(let i = 0; i < string_length; i++) {
                random_ascii = Math.floor((Math.random() * 25) + 97);
                random_string += String.fromCharCode(random_ascii)
            }
            return random_string
        }

        var random_string = generate_random_string(6)

У меня есть много применений для этого генератора случайных строк, внутри других тестовых файлов для различных сценариев.Вместо того, чтобы копировать и вставлять это каждый раз, я хочу повторно использовать эту функцию и вызывать ее внутри другого тестового файла.

Как мне это настроить?

Я попытался создать пользовательскую команду внутри файла commands.js, например, так:

Cypress.Commands.add("random_string_gen", 
    function generate_random_string(string_length) {
      let random_string = '';
      let random_ascii;
      for(let i = 0; i < string_length; i++) {
          random_ascii = Math.floor((Math.random() * 25) + 97);
        random_string += String.fromCharCode(random_ascii)
      }
      return random_string
})

Но это не сработало, когда я вызвал ее в своем тестовом файле:

   cy.get('#name').click()
   cy.get('#name').random_string_gen()

Я хочу повторно использовать функцию внутри одного файла и вызывать ее внутри другого, но я не уверен, как настроить необходимые файлы команды / индекса JS, поэтому шаблон, который поможет мне начать работу, будет очень полезен!

1 Ответ

0 голосов
/ 07 февраля 2019

Просто создайте пользовательскую команду на cypress/support/commands.js следующим образом:

Cypress.Commands.add('generate_random_string', (string_length) => { 
  let random_string = '';
  let random_ascii;
  for(let i = 0; i < string_length; i++) {
      random_ascii = Math.floor((Math.random() * 25) + 97);
      random_string += String.fromCharCode(random_ascii)
  }
  return random_string
 });

Затем в ваших тестовых спецификационных файлах вы можете вызвать cy.generate_random_string(5).

Например, это будетвывести на консоль случайную сгенерированную строку длиной 5.

/// <reference types="Cypress" />

context('stackoverflow', () => {
  it('stackoverflow', () => {
    cy.generate_random_string(5).then((result) => {
      console.log(result);
    });
  })
})

// Output: eauyy
...