我想使用qaf-cucumber来利用QAF功能,同时仍然使用JUnit的Cucumber。主要是,我需要QAF的数据提供者功能,允许外部化场景示例。csv,以便在几个场景和功能中使用它们。
Junit:4.12
cucumber:5.0.0-RC2
QAF:2.1.15
qaf-cucumber: 2.1.15-beta-3(最新版本,因为还没有发布)
当使用场景上方的QAF标记@dataFile
来指定场景的位置时。csv:
>
我得到了预期的信息跟踪“c.qmetry.qaf.automation.util.CSVUtil-加载csv数据文件:src/test/resources/data/testdata.csv”。
场景的执行次数与场景中的示例行数相同。csv,正如所料。
在步骤中,像这样的引用
此外(但我不寻求任何解决方案):
>
关于CSV的QAF留档说
@dataFile:资源/数据/logintestdata.csv
等同于示例:{"dataFile":"资源/数据/logintestdata.csv"}
为BDD2,但第二个没有触发任何场景,就像没有给出例子一样。
关于BDD2语法的QAF文档说明,当使用QAF标记
@dataFile
时,应该使用小cucumber关键字场景
。尽管如此,这样做会给出下面的堆栈跟踪。相反,必须使用关键字场景大纲
。
java.lang.NullPointerException
at java.util.Collections$UnmodifiableCollection.<init>(Collections.java:1026)
at java.util.Collections$UnmodifiableList.<init>(Collections.java:1302)
at java.util.Collections.unmodifiableList(Collections.java:1287)
at gherkin.ast.ScenarioOutline.<init>(ScenarioOutline.java:13)
at com.qmetry.qaf.automation.cucumber.Bdd2Compiler.compile(Unknown Source)
at io.cucumber.core.feature.FeatureParser.compilePickles(FeatureParser.java:59)
at io.cucumber.core.feature.FeatureParser.parseResource(FeatureParser.java:37)
at io.cucumber.core.runtime.FeaturePathFeatureSupplier.lambda$new$0(FeaturePathFeatureSupplier.java:39)
at java.util.function.BiFunction.lambda$andThen$0(BiFunction.java:70)
at io.cucumber.core.resource.ResourceScanner.lambda$null$2(ResourceScanner.java:128)
at io.cucumber.core.resource.PathScanner$ResourceFileVisitor.visitFile(PathScanner.java:67)
at io.cucumber.core.resource.PathScanner$ResourceFileVisitor.visitFile(PathScanner.java:52)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at io.cucumber.core.resource.PathScanner.findResourcesForPath(PathScanner.java:46)
at io.cucumber.core.resource.PathScanner.findResourcesForUri(PathScanner.java:26)
at io.cucumber.core.resource.ResourceScanner.findResourcesForUri(ResourceScanner.java:111)
at io.cucumber.core.resource.ResourceScanner.scanForResourcesUri(ResourceScanner.java:88)
at io.cucumber.core.runtime.FeaturePathFeatureSupplier.loadFeatures(FeaturePathFeatureSupplier.java:62)
at io.cucumber.core.runtime.FeaturePathFeatureSupplier.get(FeaturePathFeatureSupplier.java:46)
at io.cucumber.junit.Cucumber.<init>(Cucumber.java:138)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Cucumber runner位于
src/java/com
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = "com.steps",
plugin = {"com.qmetry.qaf.automation.cucumber.QAFCucumberPlugin", "pretty"})
public class RunCucumber {
}
功能位于
src/test/resources/features
Feature: Cucumber scenario with QAF data provider
@dataFile:src/test/resources/data/testdata.csv
Scenario Outline: Test
Given my scenario works with the examples "<column1>" and "<column2>"
testdata.csvsrc/test/Resources/data
#col.seperator=|
column1|column2
example1_column1|example1_column2
example2_column1|example2_column2
步骤在src/test/java/com/步骤
public class TestSteps {
@Given("my scenario works with the examples {string} and {string}")
public void myScenarioWorks(String value1, String value2) {
// value1 equals "<column1>" and value2 equals "<column2>" !
}
}
我尝试了2.1.15,它对我有效。我在qaf Cumber 2.1.15-beta-3上也表现得很好,但当升级到qaf Cumber 2.1.15时,效果很好。
有没有可能用gherkin写一个场景大纲,其中有一个断言步骤,而不是在所有的例子中都需要? null 有没有更好的写法?
在我们的cucumber特性文件中,我们使用了场景大纲,在运行脚本之前,我们需要在运行时填充数据。 基于数据文件中传递的城市路线,我们使用一个API创建PNR,该API返回给我一个实际的PNR。创建的PNR值需要存储在场景数据表中。 如果我们有场景,我们可以使用DataTable函数访问函数内部的值。我们有任何类与场景大纲数据表交互吗 例如。 请让我知道如果现有的类或替代方案来解决这个问题。
我遇到了一个问题,似乎没有将来自馈线的数据添加到会话中。我正在测试一个系统,其中一个用户有一个角色(即用户或管理员),我需要根据角色执行各种测试。在高级教程之后,我将链拆分为不同的对象(每个对象都在自己的文件中)——其中一个对象包含登录过程,无论用户角色如何,登录过程都是相同的。我不想重复使用这个,但要用不同的喂食器。 我使用csv feeder加载用户名和密码,但看起来它无法将数据添加到会话中,
步骤定义
Entity Framework Core 通过一个提供程序模型来允许使用 EF 访问各种不同的数据库。一些概念对于大部分数据库是通用的,这些都包含在主要的 EF Core 组件中,包括 LINQ 的查询表达、事务以及从数据中加载出来后对象的变更跟踪。一些概念则是特定于个别提供程序,比如 SQL Server 提供程序允许你配置内存优化表(一个特定于 SQL Server 的功能),另外一些概念则
我已使用以下方法在应用程序中输入凭据。 其中EnterText定义如下: 在测试类中,我写了下面的代码 我得到以下错误: 失败:loginProxy(“11”,“Priya”)java.lang.NumberFormatException:java.lang.Integer处为空。parseInt(未知源)位于java.lang.Integer。parseInt(未知源) 请帮助解决同样的问题。据