11 數(shù)據(jù)驅(qū)動
? ? 數(shù)據(jù)驅(qū)動是測試框架中一個非常好的功能,使用數(shù)據(jù)驅(qū)動,可以在不增加代碼量的情況下生成不同的測試策略。下面我們來看看在Cypress中的數(shù)據(jù)驅(qū)動使用方法。
11.1 數(shù)據(jù)在文件中
? ? 在前面已經(jīng)使用很多次,示例如下所示:
[
{
"ID": "Data-1",
"name": "Surpass",
"age": 28
},
{
"ID": "Data-2",
"name": "Kevin",
"age": 29
}
]
? ? 示例代碼如下所示:
/// <reference types="cypress" />
import Data from "./user.json"
describe('數(shù)據(jù)在文件中', () => {
Data.forEach(item => {
it(item.ID, () => {
cy.log(`name is ${item.name},age is ${item.age}`);
});
});
});
11.2 使用fixture
? ? Cypress中fixture默認位于cypress\fixtures\example.json文件中。操作步驟如下所示:
- 在cypress\fixtures\example.json,創(chuàng)建user.json,并添加以下的數(shù)據(jù):
[
{
"ID": "Data-1",
"name": "Surpass",
"age": 28
},
{
"ID": "Data-2",
"name": "Kevin",
"age": 29
}
]
- 使用fixture,如下所示:
/// <reference types="cypress" />
describe('數(shù)據(jù)在fixture中', () => {
it('測試fixture用法-1', () => {
// 由于使用默認目錄,則路徑可以省略,否則需要添加文件所在路徑
cy.fixture("user.json", "utf8").as("userData");
cy.get("@userData").each((item) => {
cy.log(`name is ${item.name},age is ${item.age}`);
});
});
it('測試fixture用法-2', () => {
// 由于使用默認目錄,則路徑可以省略,否則需要添加文件所在路徑
cy.fixture("user.json", "utf8").then((element) => {
let data = element;
data.forEach(item => {
cy.log(`name is ${item.name},age is ${item.age}`);
});
});
});
});