【发布时间】:2021-12-03 21:29:32
【问题描述】:
如何获取有关失败测试的更多信息? 理想情况下,我希望在 except 函数上有第二个参数,我可以在其中传递将显示在控制台上的字符串。比如:
var i = 0;
var j = 0;
expect( i / j, `failed when dividing ${i} ${j}` )
我也试过这个:
test.describe("Test description", () => {
test("Test name", async ({ page }) => {
...snip...
await test.step("Testing DIV0 is fail", async () => {
await expect(4/0).toBe(5);
});
...snip...
});
});
命令行可能会快速闪烁文本Testing DIV0 is fail 1/1000 秒。这没有帮助。如果我找不到我想要发现的问题,基本上 Playwright 是无法使用的。
我所看到的:
1) myTests.spec.ts:40:2 › Test description
Error: expect(received).toBe(expected) // Object.is equality
Expected: 5
Received: Infinity
44 | await test.step("Testing DIV0 is fail", async () => {
> 45 | await expect(4/0).toBe(5);
| ^
46 | });
at myTests.spec.ts:45:22
at TestTypeImpl._step (...\node_modules\@playwright\test\lib\test\testType.js:213:13)
at Function.step (...\node_modules\@playwright\test\lib\test\transform.js:133:12)
at ...\tests\myTests.spec.ts:44:14
at WorkerRunner._runTestWithBeforeHooks (...\node_modules\@playwright\test\lib\test\workerRunner.js:450:7)
Slow test: basicPageChecks.spec.ts (24s)
1 failed
myTests.spec.ts:40:2 › Test description
12 skipped
我可以很容易地在代码中添加注释。或者添加日志记录。
也许这些额外的数据可以在报告中获得??我错过了什么吗??
【问题讨论】:
-
没有办法在开玩笑的期望中传递额外的消息(并且在剧作家期望中扩展了这些消息)。在您的示例中,输出清楚地显示 `Expected: 5 Received: Infinity`,因此您可以看到预期值和实际值。您在输出中遗漏了哪些信息?
-
在第一个代码 sn-p 中,我给出了我想要的详细程度的示例:
failed when dividing ${i} ${j})。我希望能够传递一个字符串,我可以在其中提供我想要的信息。也许代码在数据集上循环,一个例子失败了。最好能得到哪条数据失败。此外,我解释说我看不到字符串Testing DIV0 is fail也符合我的标准。 -
我有幸与熟悉剧作家的人交谈,似乎问题已经得到解决。这并不完全直观。属于
test()的console.log 输出不仅会在执行时记录,还会再次记录在显示的摘要下。 -
为了清楚起见,console.log 不是答案的原因是它总是 记录。目标是仅在必要时记录额外信息。
-
您可以随时手动检查您的条件并抛出您喜欢的任何消息: if (i/j !== 5) throw new Erorr(`failed when division ${i} ${j}` );
标签: playwright