Cypress: запустить только один тест

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

В настоящее время я комментирую другие свои тесты, но это действительно раздражает.

Есть ли способ включить только один тест в Cypress?

Возможный дубликат В Cypress.io есть возможность контролировать запуск теста?

fkoessler 29.07.2019 18:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
145
1
85 750
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Ответ принят как подходящий

запустить только один файл

cypress run --spec path/to/file.spec.js

или используя шаблоны глобуса:

cypress run --spec 'path/to/files/*.spec.js'

Note: you need to wrap your glob patterns in single quotes to avoid shell expansion!

запустить только один тест в файле

Вы можете использовать .only, как описано в документы Кипарис.

it.only('only run this one', () => {
  // similarly use it.skip(...) to skip a test
})

it('not this one', () => {
})

Также вы можете сделать то же самое с блоками describe и context.

редактировать:

есть также приятное расширение VSCode, упрощающее добавление/удаление .only с помощью сочетаний клавиш. Он называется Test Utils (устанавливается с помощью ext install chrisbreiding.test-utils). Он работает с js, кофе и машинописным текстом:

Стоит отметить, что .only() можно добавить к нескольким тестам, и только эти тесты будут выполняться. Таким образом, вы можете использовать это для запуска более чем одного теста. ?

awesame 28.07.2021 18:16

Есть несколько способов добиться этого.

  1. Вы можете добавить .onlyк it или describe см. ответ @bkucera
  2. Вы можете сделать это из терминала, как описано в документ здесь.
     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    

Включение примера CLI сделало этот ответ наиболее полным и полезным для меня.

BradGreens 08.10.2019 22:42

Я нашел один способ пропустить тесты, которые мне не нужно запускать (в текущем тесте), и это использовать: this.skip();

it('test page', function () {
    // skip this test for now
    this.skip();
    cy.visit('http://example.com/')
    cy.contains('test page').click()
    cy.url()
        .should('include', '/test-page/')
})

1. важно использовать обычную функцию в качестве второго аргумента, это не будет доступно в стрелочной функции
2. Весь тест будет пропущен независимо от того, где мы напишем this.skip()

Вы можете запустить тест следующим образом.

кипарис запустить --spec **/file.js

Вы можете отключить ненужные наборы тестов и отдельные случаи, добавив x перед вызовом методов testrunner (describe, it и т. д.)

Так это будет выглядеть так:

// this whole testsuite will be muted
xdescribe('Visit google', () => { 
  it('should visit google', () => { cy.visit('https://google.com/'); });
});

// this testsuite will run
describe('Visit youtube', () => {
  it('should visit youtube', () => { cy.visit('https://youtube.com/'); });

  // this testcase will be muted
  xit('is not necessary', () => { ... });
});

Чтобы запустить определенный файл через Терминал:

 npx cypress run --record --spec "cypress/integration/my-spec.js"

 npm run cypress -- --record --spec "cypress/integration/my-spec.js"

Вы можете использовать это

cypress run -- --spec 'path/to/files/*.spec.js'

или

npm run --spec 'path/to/files/*.spec.js'

Это сработало для меня.

Большое спасибо

Мои тестовые файлы имеют такую ​​структуру path/something.test.jsx и команды npx cypress run --spec path/something.test.jsx дают следующее исключение в терминале:

Can't run because no spec files were found.
We searched for any files matching this glob pattern:
...

Удивительно, но следующее работает и запускает тест только для одного файла (при условии, что у вас установлен jest):

jest path/something.test.jsx
  1. Очень простое решение состоит в том, чтобы добавить к вашим тестам префикс с числами, поскольку среды тестирования обычно по умолчанию запускают тесты в буквенно-цифровом порядке, поэтому, если мне нужно проверить один файл спецификации, я скопирую содержимое в файл 0-[ имя-файла].spec и повторно запустите тестовую команду. После завершения теста вы прекращаете тестовый прогон, так как вы получите результаты, которые вы искали. Этот ответ предназначен для проектов, в которых ваша среда тестирования абстрагирована, и у вас, как у разработчика, нет всех доступных опций для вашей среды тестирования. Не лучший ответ, но он работает, интуитивно понятен и очень прост в использовании. Я обнаружил, что это способ избежать добавления набора условных вызовов skips() или only(), которые не попадут в производство, их придется удалить, и вы можете легко добавить шаблон файла в файл .gitignore, чтобы эти локальные файлы не регистрируются.

используйте ключевое слово @focus в тестовых сценариях при выполнении с использованием cypress open

Лучший способ сделать такие прогоны — использовать ключевое слово .Только, которое предоставляет кипарис.

Чтобы запустить все тестовые случаи в одной функции описания из множества функций описания, добавьте .only в необходимое описание.

describe("1st describe", () => {
  it("Should check xx", async function(){
  });
  it("Should check yy", async function(){
  });
});   
describe.only("2nd describe", () => {
  it("Should check xx", async function(){
  });
  it("Should check yy", async function(){
  });
}); 
describe("3rd describe", () => {
  it("Should check xx", async function(){
  });
  it("Should check yy", async function(){
  });
}); 

Так вот только 2-е описание будет работать.

Точно так же, если вы хотите запустить несколько тестовых случаев в описании 1, добавьте .only перед всеми тестовыми примерами, которые вы хотите запустить.

describe("describe statement", () => {
  it("Should check xx", async function(){
  });
  it.only("Should check yy", async function(){
  });
  it.only("Should check zz", async function(){
  });
});

Так вот это для yy и zz будет работать

Это похоже на подгонка и описание в карме и жасмин, с которым вы, возможно, знакомы.

Вы можете пропустить тест в кипарисе с это.пропустить или выйти

Другие вопросы по теме