Testing TestCafe';动态';测试用例

Testing TestCafe';动态';测试用例,testing,automated-tests,e2e-testing,web-testing,testcafe,Testing,Automated Tests,E2e Testing,Web Testing,Testcafe,我使用TestCafe为当前项目创建了一些e2e健全性测试。这些测试是标准的TestCafe测试: fixture(`Basic checkout flow`) test('Main Flow', async (t) => { }); 我想对多个站点区域设置和多个通道执行此测试。i、 我需要这个测试来运行nl_nl,nl_be,en_gb。。也适用于b2c、b2b等渠道 最简单的方法是在测试本身中创建一个循环,在区域设置和通道上循环,但我希望同时运行这些测试 我试图创建一个函数来动态

我使用TestCafe为当前项目创建了一些e2e健全性测试。这些测试是标准的TestCafe测试:

fixture(`Basic checkout flow`)

test('Main Flow', async (t) => {

});
我想对多个站点区域设置和多个通道执行此测试。i、 我需要这个测试来运行nl_nl,nl_be,en_gb。。也适用于b2c、b2b等渠道

最简单的方法是在测试本身中创建一个循环,在区域设置和通道上循环,但我希望同时运行这些测试

我试图创建一个函数来动态生成这些测试,但TestCafe当时似乎无法检测测试

dynamicTest('Main Flow', async (t) => {

});

function dynamicTest(testName, testFn) => {
  const channels = ['b2c']

  channels.forEach((channel) => {
    test(`[Channel] ${channel}] ${testName}`, testFn);
  });
};
有更好的方法吗?我看到的唯一解决方案是从Jenkins多次运行测试脚本以实现并发性

更详细的代码:

import HomePage from '../../page/HomePage/HomePage';
import EnvUtil from '../../util/EnvUtil';

const wrapper = (config, testFn) => {
  config.locales.forEach(async locale =>
    config.channels.forEach(async channel => {
      const tstConfig = {
        locale,
        channel
      };

      tstConfig.env = EnvUtil.parse(tstConfig, config.args.env);
      testConfig.foo = await EnvUtil.get() // If I remove this line it works!

      testFn(config, locale, channel)
    })
  );
};

fixture(`[Feature] Feature 1`)
  .beforeEach(async t => {
    t.ctx.pages = {
      home: new HomePage(),
      ... more pages here
    };
  });

wrapper(global.config, (testConfig, locale, channel) => {
  test
    .before(async (t) => {
      t.ctx.config = testConfig;
    })
    .page(`foo.bar.com`)
    (`[Feature] [Locale: ${locale.key}] [Channel: ${channel.key}] Feature 1`, async (t) => {
      await t.ctx.pages.home.header.search(t, '3301');

      .. more test code here
    });
});
如果我像这样运行它,我会得到一个“testisundefined”错误。我包装“测试”的方式是否有问题?

使用TestCafe of,您可以运行从外部库导入的测试或动态生成的测试,即使您提供的测试文件不包含任何测试


您可以在此处了解更多信息:

请告诉我您正在使用的TestCafe版本好吗?我正在运行最新版本(0.22.0)。此示例适用于我的TetstCafe v0.22:。请你检查一下好吗?我会检查的,谢谢!我发现原因是包装文件中有一个“await fn()”。我将其添加到示例中。不知道为什么