Cypress多环境测试:如何通过JSON读取环境值复用测试数据
实现Cypress多环境测试数据自动切换
一、调整JSON文件结构
先按你的需求重构两个JSON文件,把不同环境的配置和测试数据分别归类:
修改后的credentials.json
{ "environment": "stage", "stage": { "url": "stage.site.url", "sausername": "stage-sausername", "sapassword": "stage-sapassword", "viewonlyusername": "stage-vouusername", "viewonlypassword": "stage-voupassword" }, "test": { "url": "test.site.url", "sausername": "test-sausername", "sapassword": "test-sapassword", "viewonlyusername": "test-vouusername", "viewonlypassword": "test-voupassword" } }
修改后的SuperAdminTestData.json
{ "stage": { "accountName": "stage-account name", "PartnerAdminAccount": "Automation Partner (Stage)", "WholesalePartnerAccount": "Automation Wholesale Partner (Stage)", "mitelAccountName": "Platform name (Stage)", "siteName": "stage-site name" }, "test": { "accountName": "test-account name", "PartnerAdminAccount": "Automation Partner (Test)", "WholesalePartnerAccount": "Automation Wholesale Partner (Test)", "mitelAccountName": "Platform name (Test)", "siteName": "test-site name" } }
二、修改测试脚本(SuperAdminSpec.js)
调整before钩子的逻辑,先读取环境配置,再自动匹配对应环境的测试数据:
describe("Super Admin - User Roles and Permissions", function () { let currentEnvCredentials, currentEnvTestData; before(function () { // 先读取凭证文件,获取当前指定的环境 cy.fixture('credentials').then((credentials) => { // 统一转小写,避免大小写不匹配问题 const currentEnv = credentials.environment.toLowerCase(); // 取出当前环境的凭证 currentEnvCredentials = credentials[currentEnv]; // 根据当前环境,读取对应测试数据 cy.fixture('SuperAdminTestData').then((allTestData) => { currentEnvTestData = allTestData[currentEnv]; }); }); }); it("Login with valid credentials", function () { loginfunction(currentEnvCredentials.url, currentEnvCredentials.sausername, currentEnvCredentials.sapassword); }); it('Navigate to Partner Admin account', function () { clickAllcustomers(); clickCustomer(currentEnvTestData.PartnerAdminAccount); }); });
三、关键说明
- 大小写兼容:把
environment的值转成小写,避免JSON里stage和Stage这类大小写差异导致的匹配失败 - 异步顺序:利用Cypress fixture的异步链式调用,确保先拿到环境名称,再去读取对应环境的测试数据
- 切换环境:只需要修改
credentials.json里的"environment": "stage"为"environment": "test",所有测试就会自动切换到对应环境的配置和数据
内容的提问来源于stack exchange,提问作者Rutvi Desai
相关产品推荐
相关产品推荐

