标签: cucumber

如何将 TestNG 参数传递给 Cucumber?

我正在尝试在不同的浏览器下运行我的黄瓜测试,所以我有test.xml(是的,目前只有一种浏览器)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SelfCare" verbose="1" thread-count="1" parallel="tests" configfailurepolicy="continue">
    <parameter name="environment" value="TEST" />
    <test name="Chrome">
        <parameter name="browser" value="chrome" />
        <parameter name="width" value="1024" />
        <parameter name="height" value="768" />
        <classes>
            <class name="TestNGRunner">
                <methods>
                    <include name="scenario"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)

对于这个 TestNG 运行程序类,我可以browser从该运行程序类访问参数,但我需要将此变量传递给 Cucumber,其中根据传递的变量创建浏览器实例。到目前为止,我在没有 TestNG 的情况下使用它,并且通过环境变量传递这些变量,但是我认为如果我在不同的浏览器上并行运行测试,这将不起作用。

import cucumber.api.CucumberOptions;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.PickleEventWrapper;
import cucumber.api.testng.TestNGCucumberRunner;
import org.testng.annotations.*;

@CucumberOptions(
        plugin = {"html:target/cucumber-html-report",
                "json:target/cucumber.json",
                "pretty:target/cucumber-pretty.txt",
                "junit:target/cucumber-results.xml"},
        strict = true,
        extraGlue = {"src/test/resources/Hooks.java"},
        features = {"src/test/resources/Header.feature"}
) …
Run Code Online (Sandbox Code Playgroud)

java testng parameter-passing cucumber cucumber-java

1
推荐指数
1
解决办法
5967
查看次数

更新黄瓜版本后线程“main”中出现异常

我更新了我的黄瓜版本之后它给出了以下异常:

     WARNING: You are using deprecated Main class. Please use 
   io.cucumber.core.api.cli.Main
   Exception in thread "main" cucumber.runtime.CucumberException: Failed to 
  instantiate public 
 cucumber.runtime.java.JavaBackend(cucumber.runtime.io.ResourceLoader,io.cucum 
  ber.stepexpression.TypeRegistry)
Run Code Online (Sandbox Code Playgroud)

我的跑步者班级:

  package hgtest.runner;


import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

@CucumberOptions(plugin = "json:target/cucumber-report.json",
        features="classpath:features",
        glue="hgtest.stepdefinitions"
)
public abstract class CustomCucumberAbstractTestng extends AbstractTestNGCucumberTests {

    public CustomCucumberAbstractTestng() {
    }

    @Test(
            groups = {"cucumber"},
            description = "Runs Cucumber Feature",
            dataProvider = "features"
    )
    @Override
    @DataProvider(parallel = true)
    public Object[][] scenarios() {
        return super.scenarios();
    }


}
Run Code Online (Sandbox Code Playgroud)

Pom.xml如下:

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>${testng.version}</version> …
Run Code Online (Sandbox Code Playgroud)

cucumber cucumber-java

1
推荐指数
1
解决办法
3万
查看次数

无法在功能文件中执行转到定义功能以导航到量角器黄瓜框架中的步骤定义文件

转到定义功能在 vs-code 上不起作用。

\n\n

我已经安装了黄瓜(小黄瓜)完整支持插件。

\n\n

复制步骤:右键单击功能文件上的步骤,然后选择转到定义。

\n\n

特征文件

\n\n
Gherkin code : When user access the Application\n
Run Code Online (Sandbox Code Playgroud)\n\n

步骤定义文件

\n\n
When(\'user access the Application\',\xc2\xa0async\xc2\xa0function\xc2\xa0() {\n\n  await\xc2\xa0PageObject.open();\n\n});  \n
Run Code Online (Sandbox Code Playgroud)\n\n

预期:它应该导航到步骤定义文件。

\n\n

项目文件夹结构

\n\n

在此输入图像描述

\n\n

设置.json\n在此输入图像描述

\n

cucumber visual-studio protractor

1
推荐指数
1
解决办法
9777
查看次数

为什么 Cucumber 不被视为测试工具?

我是 Cucumber 新手,我正在尝试了解该工具。在阅读文档时,我发现它被简单地定义为“支持 BDD 的工具”

Cucumber 是一个支持行为驱动开发(BDD)的工具。

它还被描述为“验证工具”:

Cucumber 读取以纯文本形式编写的可执行规范,并验证该软件是否按照这些规范所述进行操作。

另一方面,我注意到在10分钟的教程中过度使用了“测试”这个词。

AFAIK,这个工具的作用是敏捷测试,因为它在 e2e 测试中大量使用(测试基础 = Gherkin 功能规范 + 步骤定义)。然而,该博客说的是不同的内容:

最后,记住 Cucumber 不是一个测试工具。它是一种用于获取对系统应如何工作的共识的工具。该工具允许您(但不要求您)自动验证系统的行为(如果您认为它有用)。

现在,如果这个工具并不是真正用于测试,那么它的用途是什么?

testing bdd cucumber

1
推荐指数
1
解决办法
724
查看次数

有什么方法可以在黄瓜步骤定义中指定例如 (car|cars) 吗?

所以我有两种情况......一种开始

Given I have 1 car
Run Code Online (Sandbox Code Playgroud)

另一个开始

Given I have 2 cars
Run Code Online (Sandbox Code Playgroud)

我希望他们使用相同的步骤定义 - 即类似这样

 Given('I have {int} (car|cars)',
Run Code Online (Sandbox Code Playgroud)

我知道可以指定 2 个可能的值(即汽车或汽车),但我一辈子都不记得如何指定。有人知道吗?我正在使用打字稿、量角器、角度、硒。

也尝试过

Given(/^I have {int} (car|cars)$
Run Code Online (Sandbox Code Playgroud)

cucumber cucumberjs

1
推荐指数
1
解决办法
733
查看次数

使用 Gradle 时 Cucumber 测试结果的错误西里尔文输出

当我在 IDEA 中使用 Gradle 配置运行 Cucumber 场景时,我得到以下信息: 案例名称输出错误

但是当我在 IDEA 中使用 JUnit Run Configuration 运行测试时,名称正常显示。

两种情况下控制台输出相同。

场景是用俄语写的,我无法向他们展示安全限制的原因。

junit intellij-idea cucumber gradle cyrillic

1
推荐指数
1
解决办法
1143
查看次数

如何在 WebdriverIO 中使用 Cucumber 标签运行“标记”场景

您好_如果有人可以在这里提供帮助-我正在尝试使用 Cucumber 标签运行特定场景-这是我用来运行使用 Webdriver-Cucumber 框架构建的测试的表达式-

npx wdio 运行 wdio.conf.js --cucumberOpts.tagExpression='@Tag

当我使用上述命令时,没有任何反应 - 我已经在功能级别定义了标签 - '@Tag' - 因此我期望功能文件中的所有场景都将被执行,但是当我运行上述命令时 - 什么也没有发生。有人可以帮忙吗?

cucumber webdriver-io

1
推荐指数
1
解决办法
9571
查看次数

-Dcucumber.options 在 mvn 测试中被忽略

我正在使用“mvn test”来运行黄瓜测试,但是当我尝试使用 -Dcucumber.options=... 在命令行上传递选项时,这些选项将被忽略,并且在运行程序类中的 @CucumberOptions 中指定的选项是代替使用。例如,如果我只是尝试显示黄瓜帮助,它会忽略它并只运行测试:

C:\Maven\ArchCuke\untitled>mvn test -Dcucumber.options="--help"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< org.example:untitled >------------------------
[INFO] Building untitled 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ untitled ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Maven\ArchCuke\untitled\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ untitled ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ untitled ---
[INFO] Using 'UTF-8' encoding to …
Run Code Online (Sandbox Code Playgroud)

cucumber maven maven-surefire-plugin

1
推荐指数
1
解决办法
6499
查看次数

将 Cucumber 4.5.x 升级到 v5.0.0

我正在尝试将 Cucumber 4.5.x 的旧测试框架升级到更新版本。该项目是 Maven、IntelliJ、Java、Selenium 和 Cucumber 项目。

但 Cucumber 似乎要么故意误导我,要么他们的文档对我来说难以理解。

首先,我升级到版本 5.0.0,重新加载 Maven 依赖项并执行 mvn clean install。

我立即发现

import io.cucumber.core.api.Scenario was gone. 
Run Code Online (Sandbox Code Playgroud)

经过一番手动搜索,我发现新的路径似乎是

import io.cucumber.core.gherkin.Scenario;
Run Code Online (Sandbox Code Playgroud)

然后我去了6.0.0版本,这里似乎没有任何场景库。

查看文档,似乎声称 Scenario 位于

io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)

但这对于 4.5.x 版本来说甚至都不正确,那么我到底如何找到导入的新路径呢?

更新:

在尝试升级之前,我的插件列表中有以下内容:

io.cucumber:cucumber-core:4.5.2
io.cucumber:cucumber-expressions:7.0.2
io.cucumber:cucumber-dependencies:1.1.14
io.cucumber:cucumber-datatable_1.1.14 
io.cucumber:cucumber.gherkin:5.1.0
io.cucumber:cucumber-tag-expressions:1.1.1
Run Code Online (Sandbox Code Playgroud)

在我的 pom.xml 中:

<properties>
    <java.version>11</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <selenium.version>4.3.0</selenium.version>
    <cucumber.version>4.5.2</cucumber.version>
    <junit5.version>5.5.1</junit5.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

更改 pom.xml 中的版本号并重新加载是正确的方法吗?或者我应该用项目插件列表中的较新版本替换该插件(在 IntelliJ 中)?

我应该升级任何其他 cucumber-x 插件吗?

替代方案 1:

我在 pom.xml 文件中将版本更改为 5.0.0。

  • 其他黄瓜插件的插件版本会自动更新。

构建项目:确定运行 mvn clean install -> 出现以下错误:

cannot find symbol
[ERROR]   symbol:   class Scenario …
Run Code Online (Sandbox Code Playgroud)

cucumber maven cucumber-jvm selenium-webdriver cucumber-java

1
推荐指数
1
解决办法
722
查看次数

黄瓜:如何从子目录中的功能访问步骤

我正在编写一些黄瓜规格,我正在努力保持模块组织的功能.因此,例如,我的admin/posts控制器存储在features/admin/posts中

困难在于,每当我从该目录运行该功能时,它都无法识别features/step_definitions中的任何步骤.

简而言之,如何在功能子目录中包含所有基本step_definition?

ruby-on-rails cucumber

0
推荐指数
1
解决办法
1214
查看次数