如何在Cypress指定spec测试用例中覆盖cypress.json配置项
Cypress 覆盖全局配置的实现方案
你写的it()第二个参数传入配置的写法是正确的,属于单测试用例级别的配置覆盖,可直接覆盖cypress.json(或更高版本的cypress.config.js/ts)中的对应配置项。
不同层级的配置覆盖方法
1. 单测试用例覆盖
就是你现在用的写法,仅对当前it对应的测试用例生效:
it('你的测试用例名称', { chromeWebSecurity: false }, () => { // 测试逻辑代码 })
2. 测试分组覆盖
如果需要让同一个describe下的所有测试用例都复用同一份覆盖配置,可以把配置放在describe的第二个参数:
describe('测试分组名称', { chromeWebSecurity: false, defaultCommandTimeout: 10000 }, () => { // 该分组下的所有用例都会继承上述配置 it('用例1', () => { // 测试逻辑 }) it('用例2', () => { // 测试逻辑 }) })
3. 整个spec文件覆盖
如果当前spec文件的所有测试都需要修改配置,可以在文件顶部直接调用Cypress.config()设置:
// 单个配置项设置 Cypress.config('chromeWebSecurity', false) // 批量设置多个配置项 Cypress.config({ chromeWebSecurity: false, viewportWidth: 1920, viewportHeight: 1080 }) describe('当前文件所有测试', () => { // 所有用例都默认使用上面设置的配置 })
注意事项
- 不是所有配置项都支持运行时覆盖,类似
experimentalSessionAndOrigin、nodeVersion这类需要Cypress启动时加载的配置,只能在全局配置文件中修改,无法在spec或用例级别覆盖。 - 配置优先级从高到低:单用例配置 > describe分组配置 > spec文件配置 > 全局配置文件配置
内容的提问来源于stack exchange,提问作者Sang Mai
相关产品推荐
相关产品推荐

