testing - 如何将 TestCafé 测试组织成多个步骤?
问题描述
我正在测试一个具有长场景的大型项目(有些与网页的交互超过 100 次)。我想将它们分解为按顺序运行的较短步骤(例如在 Mocha 中),但我不知道该怎么做。
示例:在单个测试中,我想运行
fixture('test1')
test('test1', async (t) => {
...login
...createSubAccount
...modifySubAccount
...activateSubAccount
})
每个步骤都将显示在控制台和报告中。现在,我唯一知道如何做的就是将每个步骤放入自己的test()
上下文中,但这意味着如果例如createSubAccount
失败,modifySubAccount
并且activateSubAccount
仍然会运行(即使工作流已经失败)。此外,每个人都会test()
清除浏览器的不愉快部分(但我可以处理)。
fixture
简而言之:如果单个子步骤失败,整个测试将立即失败,我该如何拆分测试fixture
?或类似的事情,但对于test()
?
此外,我不希望整个管道在第一次测试失败时结束,就像--stopOnFirstFail
flag 会发生的那样 - 我想运行所有测试,找出哪些失败了。
解决方案
test()
是最小的单位。这个想法是它是一段独立的测试代码,即一堆测试步骤。无论您使用什么工具(TestCafe、Playwright、Puppeteer、Cypress、mocha、Jest,......),这都不会改变。
所以:
现在,我唯一知道如何做的就是将每个步骤放入自己的 test() 上下文中,但这意味着如果 createSubAccount 失败, modifySubAccount 和 activateSubAccount 仍将运行(即使工作流已经失败)。
似乎打破了测试的主要原则之一,即它们是独立的。不要在不同的测试之间拆分属于一起的测试步骤。
如果现在唯一的缺点是测试的长度,为什么不像示例中暗示的那样做:
test('test1', async (t) => {
login();
createSubAccount();
modifySubAccount();
activateSubAccount();
});
您可以为 login、createAccount 等创建函数,然后在您的测试中只使用这些函数,这将使它们变得如此简短。您还可以轻松创建各种场景:
test('activate account without modification', async (t) => {
login();
createSubAccount();
activateSubAccount();
});
test('create account', async (t) => {
login();
createSubAccount();
});
test('create account without login', async (t) => {
createSubAccount();
});
// and so on
它甚至看起来都不长。
推荐阅读
- bixby - 如何避免在bixby中的JavaScript函数中缓存输入
- regex - 是否可以在 VTL 解析器中执行基于正则表达式的字符串替换?
- laravel - 如何调试此错误“此路由不支持 GET 方法。支持的方法:POST。'?
- java - 创建 BitSet 的组合
- java - 排序数组列表
不包括字符串前半部分的数字 - javascript - 链式承诺如何在微任务队列中排队
- python - 在 keras 自定义层中包含高级计算(类 scikit)
- javascript - 使用 javascript 从现有对象创建对象
- python - Pandas tseries Holiday 中的自定义节日庆祝活动
- python - 如何在文本文件中找到 n 个字母的单词?