javascript - 量角器:如果一个场景失败,如何解决承诺并停止跳过场景
问题描述
我有一个 Protarctor-CucumberJS 框架和一套测试场景。当我执行整个套件时,一个脚本在期望(ChaiJS)语句处失败。
Scenario 1 : Passed
Scenario 2 : Passed
Scenario 3 : Failed (Unresolved Promise)
Scenario 4 : Skipped
Scenario 5 : Skipped
Scenario 6 : Skipped
Scenario 7 : Skipped
Scenario 8 : Skipped
Scenario 9 : Skipped
Scenario 10 : Skipped
该特定步骤的步骤定义如下所示:
Then('I verify if valid success message received as {string}', function (successMessage) {
expect($(.abc).getText()).to.eventually.equal(successMessage);
});
由于存在缺陷,应用程序未显示错误,元素:$(".abc") 未显示在屏幕上,并且此场景在函数超时 30 秒后失败。完整的错误粘贴在下面。但问题是在此之后的所有其他情况都被相同的错误消息跳过。
错误:函数超时,确保承诺在 Timeout._time.default.setTimeout [as _onTimeout] (C:\bla\bla\node_modules\cucumber\lib\user_code_runner.js:81:20) 在 ontimeout ( timers.js:436:11) 在 tryOnTimeout (timers.js:300:5) 在 listOnTimeout (timers.js:263:5) 在 Timer.processTimers (timers.js:223:10)
问题:
- 如果一个场景失败,我如何避免跳过前面的场景?
- 如何在上述情况下解决承诺。
解决方案
你会使用async
函数吗?如果是这样,您可以尝试使用元素是否存在的条件,如下所示:
Then('I verify if valid success message received as {string}', async function (successMessage, done) {
const abcElement = await $(.abc).isPresent();
if (abcElement) {
expect(await $(.abc).getText()).to.eventually.equal(successMessage);
done();
} else {
done();
}
});
推荐阅读
- spring-data-mongodb - 何时使用 MongoOperations 和 MongoTemplate?
- ruby - 使用 youtube api,如何在 ruby 中上传私人视频?
- java - Kafka Stream 和 KGlobalTable Join 问题
- oracle - 在 Oracle 11g 中使用 ORACLE“FOR UPDATE SKIP LOCKED”选择非锁定行
- r - 为什么我们在向量中省略 NULL 值而不是用 0 替换?
- php - 如何访问 JSON 的某些部分?
- bash - 如何使用 bash 管道保留除第一个令牌之外的所有内容?
- python - 从烧瓶中的表单获取数据的问题
- python - 如何在 python 中生成 JWT 断言
- spring-batch - SQL [SELECT * FROM AH_PATIENT] 的未分类 SQLException;SQL状态[60000];错误代码[604];ORA-00604: 递归 SQL 级别 1 发生错误