Cypress - 数据驱动测试

Cypress 数据驱动测试借助 Fixture 实现。添加 Cypress Fixture 是为了维护和保存自动化测试数据。

Fixture 保存在 Cypress 项目中的 Fixture 文件夹(example.json 文件)内。基本上,它帮助我们从外部文件获取数据输入。

Fixtures

Cypress Fixture 文件夹可以包含 JavaScript 对象表示法 (JSON) 或其他格式的文件,数据以"键:值"对的形式保存。

所有测试数据都可以被多个测试使用。所有 Fixture 数据都必须在之前的钩子块中声明。

语法

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

cy.fixture(测试数据路径)
cy.fixture(测试数据路径,编码类型)
cy.fixture(测试数据路径,opts)
cy.fixture(测试数据路径,编码类型,选项)

这里,

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

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

  • Opts − 修改响应的超时时间。默认值为30000ms。 cy.fixture() 的等待时间过长,会导致异常。

example.json 中的实现

下面给出了 Cypress 中使用 example.json 进行数据驱动测试的实现 −

{
"email": "abctest@gmail.com",
"password": "Test@123"
}

实际测试的实现

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

describe('Tutorialspoint Test', function () {
    //部分 before hook
    before(function(){
        //访问 fix 数据
        cy.fixture('example').then(function(signInData){
        	this.signInData = signInData
        })
    })
    // 测试case
    it('Test Case1', function (){
        // 启动 URL
        cy.visit("https://www.linkedin.com/")
        // 从 Fixture 驱动的数据
        cy.get('#session_key ')
        .type(this.signInData.email)
        cy.get('# session_password').type(this.signInData.password)
    });
});

执行结果

输出如下

Implementation of Actual Test

输出日志显示值 abctest@gmail.com 和 Test@123 分别被输入到 Email 和 Password 字段。这些数据已从 Fixture 传递给测试。