gpt4 book ai didi

spock - 是否可以记录 spock 功能方法名称和子句标签?

转载 作者:行者123 更新时间:2023-12-04 16:58:43 28 4
gpt4 key购买 nike

我希望能够在运行一些自动化测试时记录 spock 功能名称和子句标签。这将有助于在使用 headless 浏览器进行自动化时调试测试问题,特别是 phantomjs。原因是,phantomjs 的行为并不总是与使用 chrome WebDriver 时相同。如果这是可能的,那也很好。

def "Login logout test"(){
given: "Go to login page"
...

when: "Submit username and password"
...
then: "Dashboard page displayed"
...

when: "logout"
...
then: "Returned to login page"
...
}

例如,如果我能得到上面的示例 spock 特征方法来记录这样的标签,那就太酷了。
Login logout test
Go to login page
Submit username and password
logout
Returned to login page

最佳答案

第一步:创建一个你自己的 spock 扩展类

package com.example.spock.exetension;
public class MySpockExtension implements IGlobalExtension {
@Override
public void start() {
}

@Override
public void visitSpec(SpecInfo spec) {
spec.addListener(new MyCustomSpockRunListener());
}

@Override
public void stop() {

}
}

第二步:创建一个可以监听 spock 运行的 RunListener
package com.example.spock.exetension;
public class MyCustomSpockRunListener extends AbstractRunListener {

private boolean specFailed;
private boolean featureFailed;
@Override
public void beforeSpec(SpecInfo spec) {
// TODO Auto-generated method stub
specFailed = false;
}
@Override
public void beforeFeature(FeatureInfo feature) {
// TODO Auto-generated method stub
featureFailed = false;
}
@Override
public void beforeIteration(IterationInfo iteration) {

}
@Override
public void afterIteration(IterationInfo iteration) {
}
@Override
public void afterFeature(FeatureInfo feature) {
// TODO Auto-generated method stub
for ( BlockInfo block : feature.getBlocks() ) {
System.out.println(block.getKind().name() + " : " + block.getTexts() );
}
}
@Override
public void afterSpec(SpecInfo spec) {
// TODO Auto-generated method stub
System.out.println(spec.getName() + " : STATUS : " + specFailed != null ? "failure":"success");

}
@Override
public void error(ErrorInfo error) {
specFailed = true;
FeatureInfo feature = error.getMethod().getFeature();
if (feature != null) {
featureFailed = true;
System.out.println(error.getMethod().getName() + " : " + error.getException());
}else {
}
}
@Override
public void specSkipped(SpecInfo spec) {
}
@Override
public void featureSkipped(FeatureInfo feature) {
}
}

第三步:注册您的新 Spock 扩展
  • 在您的类路径或资源路径中创建以下文件夹结构 META-INF/services/org.spockframework.runtime.extension.IGlobalExtension
  • 将此作为文件 com.example.spock.exetension.MySpockExtension 的内容

  • 第四步:运行您的 spock 测试,您应该会看到类似这样的输出。
    given: "Go to login page"
    when: "Submit username and password"
    then: "Dashboard page displayed"
    when: "logout"
    then: "Returned to login page"
    Login logout test : STATUS : success

    关于spock - 是否可以记录 spock 功能方法名称和子句标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145712/

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