Cypress系列(33)- 数据驱动策略 & 环境变量设置指南

370 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

前言

  • 数据驱动是测试框架中最常用的设计模式了
  • 使用数据驱动,可以在不增加代码量的前提下根据数据生成不同的测试策略

 

策略一:数据通过 JS 的方式创建

describe('测试数据放在前置条件里', function () {
    let testDatas = testDatas = [
        {'name': 'yy', 'password': 'helloqa'},
        {'name': 'age', 'password': 'helloqa2'}]

    // 循环生成测试用例
    for (const data in testDatas) {
        it(`测试外部数据${data}`, function () {
            cy.log(testDatas[data].name, testDatas[data].password)
        });
    }
})

 

策略二:使用 fixtures(推荐)

直接看我这篇文章就好了:juejin.cn/post/711191…  

策略三:数据保存在自定义文件中

// 导入数据文件 example.json,并保存在 testData 变量中
import testData from '../../data/example.json'

describe('数据驱动的栗子', function () {

    describe('数据保存在自定义文件中', function () {
        for (const data in testData) {
            it(`测试外部数据${data}`, function () {
                cy.log(testData[data].name, testData[data].body)
            });
        }
    })
})

 

测试结果

使用 cypress.env.json

前言

  • Cypress 允许针对不同测试环境使用多个配置文件并且在运行时动态指定
  • 从而免除每切换一次环境,就需要更改环境变量值的情况

 

具体操作步骤

创建文件夹和文件

  • 在 cypress安装目录下创建一个 config 文件夹
  • 文件夹下建立两个文件,分别命名为 cypress.dev.json,cypress.qa.json

 

cypress.dev.json 代码

{
  "baseUrl": "http://localhost:7077/login",
  "env": {
    "username": "jane.lane",
    "password": "password123"
  }
}

cypress.qa.json 代码

{
  "baseUrl": "http://localhost:7077/login",
  "env": {
    "username": "wrongUser",
    "password": "wrongPwd"
  }
}

在 cypress 安装目录/plugins/index.js 中更改配置如下

 

index.js 的代码

 

测试用例代码

 

命令行运行 cypress 命令

**

yarn cypress:open --env configFile=qa
  • 上述命令打开 cypress 运行器(Test Runner)
  • 当然 configFile 作为环境变量可以有多种方式传递,参照一开始的文章哦

 

查看运行器的配置项

 

测试结果

点击即可运行测试用例文件

 

运行时动态指定环境变量

  • 上面讲的使用 cypress.env.json 可以指定测试环境运行,但需要额外创建文件
  • 除 cypress.env.json 外,在运行时指定测试环境的同时仍然可以使用 cypress.json 文件

 

cypress.json 代码

  "targetEnv": "dev",
  "env": {
    "dev": {
      "username": "iTesting",
      "password": "weChat",
      "Url": "http://localhost:5883"
    },
    "qa": {
      "username": "wrongUser",
      "password": "wrongPassword",
      "Url": "http://www.test.com:5883"
    }
  }

support/index.js 代码

 

命令行运行 cypress 命令

指定需要运行的测试环境

yarn cypress:open --env testEnv=qa