Cypress - 数据驱动测试


Cypress 的数据驱动测试是借助 Fixtures 实现的。Cypress Fixtures 用于维护和保存自动化测试数据。

Fixtures 位于 Cypress 项目的 fixtures 文件夹中(例如 example.json 文件)。基本上,它帮助我们从外部文件获取数据输入。

Fixtures

Cypress fixtures 文件夹可以包含 JavaScript 对象表示法 (JSON) 或其他格式的文件,数据以“键值对”的形式维护。

所有测试数据都可以被多个测试使用。所有 Fixture 数据都必须在 before hook 块中声明。

语法

Cypress 数据驱动测试的语法如下:

cy.fixture(path of test data)
cy.fixture(path of test data, encoding type)
cy.fixture(path of test data, opts)
cy.fixture(path of test data, encoding type, options)

这里,

  • 测试数据路径 是 fixtures 文件夹中测试数据文件的路径。

  • 编码类型 - 编码类型 (utf-8、asci 等) 用于读取文件。

  • Opts - 修改响应超时时间。默认值为 30000ms。在 cy.fixture() 之前等待时间会抛出异常。

example.json 中的实现

以下是使用 Cypress 中 example.json 的数据驱动测试的实现:

{
   "email": "[email protected]",
   "password": "Test@123"
}

实际测试的实现

Cypress 中实际数据驱动测试的实现如下:

describe('Tutorialspoint Test', function () {
   //part of before hook
   before(function(){
      //access fixture data
      cy.fixture('example').then(function(signInData){
         this.signInData = signInData
      })
   })
   // test case
   it('Test Case1', function (){
      // launch URL
      cy.visit("https://www.linkedin.com/")
      //data driven from fixture
      cy.get('#session_key ')
      .type(this.signInData.email)
      cy.get('# session_password').type(this.signInData.password)
   });
});

执行结果

输出如下:

Implementation of Actual Test

输出日志显示值 [email protected] 和 Test@123 分别被馈送到电子邮件和密码字段。这些数据已从 fixtures 传递到测试中。

广告