你好,
如何知道调用我的函数的场景? 如何在我的功能场景中使用标签?
其实我有一种情况:
Feature: create module feature
As a admin
I want to use create module
<strong i="8">@createModule</strong>
Given I am logged as 'ADMIN'
And I am on "/admin/create"
Then The "book_id" field should be empty
我想在我的函数中使用我的标签@createModule然后:
this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {
if (myModule === @createModule) {
...
} else if {
...
}
return main_po.checkIsEmptyElement(this, el);
});
我想获取我的标签@createModule ,以指定调用的场景或其他替代方案,我想知道哪些场景调用了我的函数。
标签用于选择执行 cucumber-js 时要运行的场景(请参阅自述文件)。 当前的步骤没有任何方法可以告诉他们当前正在运行什么场景。 一个场景下的所有步骤都将共享一个世界实例(通过步骤定义中的this
访问)。
解决了 :
我补充说:
this.Before(function (scenario, callback) {
var tags = scenario.getTags();
this.current_module = tags[0].getName();
callback();
});
和我的功能:
this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {
if (this.current_module === @createModule) {
...
} else if {
...
}
return main_po.checkIsEmptyElement(this, el);
});
@jechazelle感谢您发布您的解决方案我需要相同的功能用于不同的用例:)
在 cucumber-js 3.2.1 我使用
Before({timeout: 20000}, async function(testCase) {
this.tags = testCase.pickle.tags.map((tag) => tag.name);`
...
}
我使用它的原因是因为特定步骤实施对于已知的场景子集失败,所以我在我们的跟踪系统中创建了一个非关键缺陷票,用票#标记失败的场景,然后添加逻辑如果 this.tags 包含票号,则在步骤实现中返回“待处理”。
这允许构建回到绿色,而权力决定他们是否要修复缺陷。
该线程已被自动锁定,因为它关闭后没有任何最近的活动。 请针对相关错误打开一个新问题。
最有用的评论
解决了 :
我补充说:
和我的功能: