代码之家  ›  专栏  ›  技术社区  ›  kuceb

Cypress:只运行一个测试

  •  0
  • kuceb  · 技术社区  · 5 年前

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

    目前,我评论了我的其他测试,但这真的很烦人。

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

    1 回复  |  直到 3 年前
        1
  •  236
  •   kuceb    3 年前

    只运行一个文件

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

    或者使用glob模式:

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

    注意:你需要 用单引号将你的glob模式括起来 避免外壳膨胀!

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

    你可以用 .only 如中所述 the Cypress docs

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

    同样,你也可以用 describe context 阻碍

    编辑:

    还有一个不错的 VSCode 进行添加/删除的扩展 只有 使用键盘快捷键更容易。它被称为Test-Utils(使用 ext install chrisbreiding.test-utils ).它与js、coffee和typescript配合使用:

    enter image description here

        2
  •  44
  •   Morlo Mbakop    5 年前

    实现这一点有多种方法。

    1. 你可以加上 .only it describe 参见@bkucera答案
    2. 如中所述,您可以从终端执行此操作 the doc here
       npx cypress run --record --spec "cypress/integration/my-spec.js"
      
       npm run cypress -- --record --spec "cypress/integration/my-spec.js"
      
        3
  •  4
  •   Oleksandr Tkalenko    4 年前

    您可以通过预先设置来禁用不需要的测试套件和特定情况 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', () => { ... });
    });
    
        4
  •  3
  •   Akshay Vijay Jain    4 年前

    我发现有一种方法可以跳过我不需要运行的测试(在当前测试中),那就是使用: 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.使用正则函数作为它的第二个参数很重要,这在arrow函数中不可用
    2.无论我们在哪里写这篇文章,整个测试都将被跳过。跳过()

        5
  •  2
  •   Marko    4 年前

    你可以这样运行测试。

    cypress run——规范**/文件。js

        6
  •  1
  •   Utkarsh Joshi    3 年前

    进行此类跑步的最佳方法是使用 只有 cypress提供的关键字。

    要在多个描述函数中的一个描述函数中运行所有测试用例,请添加。仅在要求的描述中。

    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(){
      });
    }); 
    

    所以在这里 只有第二个将运行 .

    同样,如果您想在1中运行一些测试用例,请添加。只在你想要运行的所有测试用例前面。

    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运行

    这类似于 在《因果报应》和《茉莉花》中描述 你可能很熟悉。

    你可以跳过cypress中的测试 信息技术跳过 退出

        7
  •  0
  •   Roman    3 年前

    我的测试文件的结构如下 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
    
        8
  •  0
  •   M4V3R1CK    3 年前
    1. 一个非常简单的解决方案是在测试前加上数字,因为测试框架通常会在默认情况下以字母/数字顺序运行测试——因此,如果我必须检查一个规范文件,我会将内容复制到文件0-[文件名]中。指定并重新运行测试命令。一旦测试完成,您将终止测试运行,因为您将得到您想要的结果。这个答案针对的是测试框架抽象的项目,作为开发人员,您没有测试框架的所有可用选项。这不是最好的答案,但它很有效,而且非常直观,非常容易做到。我发现这是一种避免添加大量条件跳过()或只()调用的方法,这些调用将无法进入生产环境,必须删除,并且您可以轻松地将文件模式添加到。gitignore文件,这样就不会签入这些本地文件。
        9
  •  -1
  •   ThimiraR    3 年前

    使用cypress open执行时,请在测试脚本中使用@focus关键字

        10
  •  -2
  •   GHULAM NABI    4 年前

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

     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    
        11
  •  -2
  •   saurabhshcs    3 年前

    你可以用这个

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

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

    非常感谢