赛普拉斯:仅运行一项测试


81

我只想切换运行一个测试,所以不必等待其他测试来查看一个测试的结果。

目前,我注释掉了其他测试,但这确实很烦人。

有没有一种方法可以切换仅运行一个测试Cypress


Answers:


116

只运行一个文件

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

或使用全局模式:

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

注意:您需要将glob模式用单引号引起来,以避免shell扩展!

在一个文件中仅运行一个测试

您可以按照赛普拉斯文档中的.only描述使用

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

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

另外,您可以对describecontext块进行相同的操作

编辑:

还有一个不错的VSCode扩展,可以.only使用键盘快捷键使添加/删除操作更加轻松。它称为Test Utils(可与js,coffee和typescript配合使用):

在此处输入图片说明


29

有多种方法可以实现这一目标。

  1. 您可以添加.onlyitdescribe看到@bkucera答案
  2. 您可以按照此处文档中的说明从终端执行操作
     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    

3
包括CLI示例在内,这个答案对我来说是最完整和有用的
BradGreens

2

我发现有一种方法可以跳过不需要运行的测试(在当前测试中),那就是使用: 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(),都将跳过整个测试


2

您可以通过在前面加上静音不需要测试套件和特殊情况下x,以TestRunner的方法调用(describeit,等)

因此,它看起来像:

// 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', () => { ... });
});

0

您可以像这样运行测试。

赛普拉斯运行--spec ** / file.js


0

要通过终端运行特定文件:

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

 npm run cypress -- --record --spec "cypress/integration/my-spec.js"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.