You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中根据URL条件跳过测试并按环境执行用例

在Cypress中根据baseURL条件性跳过测试的两种方案

嘿,针对你在Cypress 6.2.0里遇到的「QA环境(标识为"abc")的测试不能在生产环境(标识为"xyz")执行」的需求,我整理了两种实用方案,一起来看看:

方案一:动态检查baseURL并跳过测试(符合你想要的beforeEach/测试内判断逻辑)

你可以直接在beforeEach钩子或者测试用例内部,通过检查baseURL是否包含"xyz"来决定是否跳过测试。这里需要注意必须使用普通的function()而非箭头函数,这样才能访问Cypress测试上下文的this对象,调用this.skip()来跳过测试。

修改后的代码示例:

方式1:在beforeEach里统一判断跳过

beforeEach(function() {
  const baseUrl = environment.getBaseUrl(); 
  // 或者直接用Cypress内置的配置获取:Cypress.config('baseUrl')
  
  // 如果是生产环境(baseURL含xyz),直接跳过当前测试用例
  if (baseUrl.includes('xyz')) {
    this.skip();
  }

  // 非生产环境才执行登录和访问操作
  login.loginByUser('TomJones');
  cy.visit(`${baseUrl}${route}`);
});

it('test page', function () {
  // 这段代码只会在非生产环境执行
  cy.intercept('GET', '**/some-api/v1/test*').as('Test');
  cy.get('#submitButton').click();
  // 后续添加你的断言逻辑...
});

方式2:在单个测试用例内判断跳过

beforeEach(() => { 
  login.loginByUser('TomJones'); 
  cy.visit(`${environment.getBaseUrl()}${route}`); 
});

it('test page', function () { 
  const baseUrl = environment.getBaseUrl();
  
  if (baseUrl.includes("xyz")) {
    this.skip(); // 生产环境直接跳过
  }

  // 非生产环境执行测试逻辑
  cy.intercept('GET', '**/some-api/v1/test*').as('Test');
  cy.get('#submitButton').click();
});

方案二:你已验证可行的CLI+文件夹结构分组方案

这种方案通过文件夹结构将不同环境的测试用例物理隔离,再结合CLI命令过滤执行,适合大规模测试套件的管理,结构更清晰。

步骤说明:

  1. 按环境拆分测试文件夹:
    整理你的测试文件结构,将QA和生产环境的测试分别放到对应文件夹:

    cypress/integrations/smokeTest/
    ├── QA/          # 仅QA环境运行的测试用例文件
    └── Prod/        # 仅生产环境运行的测试用例文件
    
  2. 配置npm脚本:
    在项目的package.json中添加对应的执行脚本(修正了你原命令里的拼写错误):

    "scripts": {
      "cy:filter:qa": "cypress run --spec \"cypress/integration/smokeTests/QA/*-spec.ts\"",
      "cy:filter:prod": "cypress run --spec \"cypress/integration/smokeTests/Prod/*-spec.ts\"",
      "cypress:open:all": "cypress open --spec \"cypress/integration/smokeTests/*/*-spec.ts\""
    }
    
  3. 执行对应命令:

    • 运行QA环境测试:
      npm run cy:filter:qa
      
    • 运行所有环境的测试(QA+生产):
      npm run cypress:open:all
      
    • 运行生产环境测试:
      npm run cy:filter:prod
      

内容的提问来源于stack exchange,提问作者Dominique M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:30:44