TestCafe beforeEach hook - 如何执行函数并声明变量

Car*_*l M 4 javascript automated-tests e2e-testing testcafe

我正在使用TestCafe并寻找在beforeEach钩子中做两件事的解决方案:1.执行一个函数(在每次测试之前登录)2.创建唯一的测试数据

我可以单独实现两个,但不能同时实现两个钩子:

这适用于登录用户:

fixture('My Component')
  .beforeEach(login(user, password)
)
Run Code Online (Sandbox Code Playgroud)

这可以为每个测试用例创建新的测试数据:

fixture(`My Component`)
  .beforeEach(async t => {
    randomLastName = faker.name.lastName();
})
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一个解决方案来实现两个钩子.而且,我从文档中了解到,使用两个beforeEach挂钩将导致第一个被覆盖.

我当前的实现是在beforeEach钩子中执行登录并在每个测试用例中创建测试数据,这比我想要的更详细,例如,每个测试用例包含

test('My Test', async (t) => {
  let randomLastName = faker.name.lastName();
  // ...
}
Run Code Online (Sandbox Code Playgroud)

建议将不胜感激!

hdo*_*val 7

一种解决方案是使用测试上下文在每次测试执行之前准备任何类型的数据上下文

fixture('My Component')
  .beforeEach(async (t) => {
    // login method
   login(user, password);
   // inject test data in the test context
   t.ctx.inputData = {
      randomLastName: faker.name.lastName()
   };
});

test('My Test', async (t) => {
  // read test data from test context
  const inputData = t.ctx.inputData;
  const randomLastName = inputData.randomLastName;
  // ...
}
Run Code Online (Sandbox Code Playgroud)