gpt4 book ai didi

testing - test.before 钩子(Hook)覆盖 feature.beforeEach 钩子(Hook)。逻辑不好?

转载 作者:行者123 更新时间:2023-11-28 20:34:42 27 4
gpt4 key购买 nike

文档 ( https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#test-hooks ) 指出:
“如果指定了 test.before 或 test.after,它会覆盖相应的 fixture.beforeEach 和 fixture.afterEach 钩子(Hook),这样后者就不会被执行。”

这不符合逻辑。 feature.beforeEach 不应该先执行吗?

我的代码使用 feature.beforeEach Hook 来最大化浏览器。我正在处理的网站具有不同的 DOM 元素,具体取决于页面大小 - 移动设备、平板电脑、桌面设备等。

当 TestCafe 打开浏览器时,它总是很小。如果我想在桌面元素上工作,我必须先等待浏览器最大化。我不能使用 test.before Hook ,因为它会尝试访问不存在的元素并立即失败。

建议:我们可以让 feature.beforeEach 钩子(Hook)总是先执行吗?这可以类似于 Cucumber 中在功能中的每个场景之前运行的“后台”命令吗?

最佳答案

我不会在一个套件中混合不同域(如桌面和移动)的测试,但如果是这样的话:

我建议构建一个 Gherkin-Sentence 来根据即将进行的测试设置环境设置。

小 cucumber 内部的业务逻辑必须更加灵活,并且 java 代码必须对应于不同的 Web 元素,具体取决于您之前设置的开关。

您可以根据通过 DSL gherkin 给出的参数生成涵盖所有领域(移动、桌面)的 gherkin-step-definition,或者为每个领域构建自己的句子,例如:

Either (parameter driven):
Open the Startpage on the <domain> interface

OR:
Open the Startpage on the mobile interface
AND
Open the Startpage on the desktop interface

Method for parameter-driven:

@When ("^Open the Startpage on the (.*) interface$")
public void OpenTheStartpageOnTheInterface(String domain){
if(domain.equals("desktop"){
driver.get("desktop.url");
}else if (domain.equals("mobile")){
driver.get("mobile.url");
}

所以我要么将 java 方法复杂化以对不同的领域作出 react ,要么将测试套件划分为不同的词汇甚至不同的项目。

关于testing - test.before 钩子(Hook)覆盖 feature.beforeEach 钩子(Hook)。逻辑不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58958771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com