在夹具中创建测试数据
Create test data in a fixture
目前,我正在做一个项目,我们必须创建用户并为这些用户做测试。我正在使用 faker
生成用户名字、姓氏和其他数据。我想用这些详细信息创建一个用户并将它们保存在一个变量中,然后使用它们调用测试。
我尝试了很多方法,比如从函数调用它们,从另一个测试调用它们,但我未能将创建的数据传递给另一个测试。
创建用户
fixture "Create test data and pass them to the other tests"
.page('url')
.beforeEach(async (t) => {
await t
.typeText("#txtUserName", 'username')
.typeText("#txtPassword", 'password')
.click("#btnLogin");
});
test("Create test data for add family tests", async (t) => {
await add_bulk_action_page.clickBulkActionButton();
await add_bulk_action_page.clickAddFamilyButton();
await add_family_page.selectCentre(<string>userVariables.defaultCentreName);
var guardianFirstName = await add_family_page.typeGuardianFirstName(
await getFirstName()
);
var guardianLastName = await add_family_page.typeGuardianLastName(
await getLastName()
);
await add_family_page.clickAddFamilyButton();
});
在同一文件中调用此测试
test("Access created test data", async (t) => {
await family_list_page.typeSearchText(guardianFirstName);
await family_list_page.typeSearchText(guardianLastName);
});
我只能提供这些代码段。对不起!希望这很清楚。
数据驱动测试在这件事上并不方便,因为我们正在创造如此多的用户。
请帮帮我
没有例子,很难说清楚。请创建一个简单的示例来演示该问题。
一般情况下,您需要将测试数据与测试文件分开创建。
你可以
- 存储或生成整套测试数据并将其导入测试文件
- 创建一个函数,根据需要生成关于假用户的信息并在测试中使用它。
参见以下示例:
test.js
import { users, createFakeUser } from './test-data';
fixture`fixture`
.page`http://localhost/testcafe/index4.html`;
test('data object', async t => {
for (let user of users) {
await t
.typeText('#name', user.name, { replace: true })
.typeText('#email', user.email, { replace: true });
}
});
test('function to get data', async t => {
const user = createFakeUser();
await t
.typeText('#name', user.name)
.typeText('#email', user.email);
});
test-data.js
import { faker } from '@faker-js/faker';
export function createFakeUser () {
return {
name: faker.name.findName(),
email: faker.internet.email()
}
}
export const users = [
createFakeUser(),
createFakeUser()
];
查看有关在 TestCafe 中使用 data-based 测试的更多信息:
目前,我正在做一个项目,我们必须创建用户并为这些用户做测试。我正在使用 faker
生成用户名字、姓氏和其他数据。我想用这些详细信息创建一个用户并将它们保存在一个变量中,然后使用它们调用测试。
我尝试了很多方法,比如从函数调用它们,从另一个测试调用它们,但我未能将创建的数据传递给另一个测试。
创建用户
fixture "Create test data and pass them to the other tests"
.page('url')
.beforeEach(async (t) => {
await t
.typeText("#txtUserName", 'username')
.typeText("#txtPassword", 'password')
.click("#btnLogin");
});
test("Create test data for add family tests", async (t) => {
await add_bulk_action_page.clickBulkActionButton();
await add_bulk_action_page.clickAddFamilyButton();
await add_family_page.selectCentre(<string>userVariables.defaultCentreName);
var guardianFirstName = await add_family_page.typeGuardianFirstName(
await getFirstName()
);
var guardianLastName = await add_family_page.typeGuardianLastName(
await getLastName()
);
await add_family_page.clickAddFamilyButton();
});
在同一文件中调用此测试
test("Access created test data", async (t) => {
await family_list_page.typeSearchText(guardianFirstName);
await family_list_page.typeSearchText(guardianLastName);
});
我只能提供这些代码段。对不起!希望这很清楚。
数据驱动测试在这件事上并不方便,因为我们正在创造如此多的用户。
请帮帮我
没有例子,很难说清楚。请创建一个简单的示例来演示该问题。
一般情况下,您需要将测试数据与测试文件分开创建。 你可以
- 存储或生成整套测试数据并将其导入测试文件
- 创建一个函数,根据需要生成关于假用户的信息并在测试中使用它。
参见以下示例:
test.js
import { users, createFakeUser } from './test-data';
fixture`fixture`
.page`http://localhost/testcafe/index4.html`;
test('data object', async t => {
for (let user of users) {
await t
.typeText('#name', user.name, { replace: true })
.typeText('#email', user.email, { replace: true });
}
});
test('function to get data', async t => {
const user = createFakeUser();
await t
.typeText('#name', user.name)
.typeText('#email', user.email);
});
test-data.js
import { faker } from '@faker-js/faker';
export function createFakeUser () {
return {
name: faker.name.findName(),
email: faker.internet.email()
}
}
export const users = [
createFakeUser(),
createFakeUser()
];
查看有关在 TestCafe 中使用 data-based 测试的更多信息: