Cucumber中的词法错误有哪些?

Cucumber中的词法错误有哪些?,cucumber,Cucumber,我试图运行一个简单的功能文件,但遇到如下异常: 线程“main”cucumber.runtime.CucumberException中出现异常:分析功能文件时出错 这是由:gherkin.lexer.LexingError:Lexing error引起的 我正在尝试参数化When语句,但出现以下异常: Scenario: Login to Gmail Given User is on Gmail login page When User enters <userName>

我试图运行一个简单的功能文件,但遇到如下异常: 线程“main”cucumber.runtime.CucumberException中出现异常:分析功能文件时出错

这是由:gherkin.lexer.LexingError:Lexing error引起的

我正在尝试参数化When语句,但出现以下异常:

Scenario: Login to Gmail

  Given User is on Gmail login page
  When User enters <userName> and <pwd>
  And Clicks on login button
  Then User should redirect to home page

  scenario outline(tried Examples as well but didn't worked): 
  |userName   | pwd |
  |ravivani10 | abc |
场景:登录Gmail
给定用户在Gmail登录页面上
当用户输入
然后点击登录按钮
然后用户应该重定向到主页
场景大纲(也尝试了一些示例,但不起作用):
|用户名| pwd|
|拉维瓦尼10 | abc|

cucumber的词法分析错误只意味着功能文件的格式不是cucumber所期望的格式。这可能是一个没有内容的场景标题,或者两次使用“Feature:blah”标题。即使错误不在您正在运行的场景中,也会发生这种情况


词法错误通常会给你一个行号。你能发布它抱怨的那行吗?

场景大纲的正确语法是以关键字场景大纲:开头,并用示例:关键字列出示例

Scenario Outline: Login to Gmail
  Given User is on Gmail login page
  When User enters <userName> and <pwd>
  And Clicks on login button
  Then User should redirect to home page
Examples:
  | userName   | pwd |
  | ravivani10 | abc |
场景大纲:登录Gmail
给定用户在Gmail登录页面上
当用户输入
然后点击登录按钮
然后用户应该重定向到主页
示例:
|用户名| pwd|
|拉维瓦尼10 | abc|

我也有同样的问题,但我使用了正确的语法。原来我的格式是错误的,是的,你读对了:格式。我的场景如下所示:

Scenario Outline: Confirm that hitting the endpoint returns the expected data
    Given uri url/to/a/service/to/test/param/{interval} and method GET
    And system user
    When I call the web service
    Then I expect that 'http status is' '200'
    And the following rules must apply to the response
        | element                     | expectation         | value                |
        | $                           | is not null         |                      |
        | objectType                  | value =             | Volume               |
        | objectData                  | is not null         |                      |
        | objectData                  | count =             | 1                    |
        | objectData[0].value         | is not null         |                      |
        | objectData[0].value         | data type is        | float                |
        | objectData[0].value         | value =             | <value>              |
    Examples:
        | interval | value     |
        | int1     | 355.77    |
        | int2     | 332.995   |
        | int3     | 353.71125 |
场景大纲:确认点击端点返回预期数据
给定uriurl/to/a/service/to/test/param/{interval}和方法GET
和系统用户
当我调用web服务时
然后我希望“http状态为”“200”
以下规则必须适用于响应
|元素|期望|值|
|$|不为空||
|objectType | value=| Volume|
|objectData不为空|
|objectData | count=| 1|
|objectData[0]。值|不为空||
|objectData[0]。值|数据类型为| float|
|objectData[0]。值|值=||
示例:
|区间值|
|int1 | 355.77|
|int2 | 332.995|
|int3 | 353.71125|
上述测试将因词法错误而失败。现在看一下我的测试中示例的缩进(缩进到场景线下一级)

如果我将测试缩进如下(与场景大纲相同的级别):

场景大纲:确认点击端点返回预期数据
给定uriurl/to/a/service/to/test/param/{interval}和方法GET
和系统用户
当我调用web服务时
然后我希望“http状态为”“200”
以下规则必须适用于响应
|元素|期望|值|
|$|不为空||
|objectType | value=| Volume|
|objectData不为空|
|objectData | count=| 1|
|objectData[0]。值|不为空||
|objectData[0]。值|数据类型为| float|
|objectData[0]。值|值=||
示例:
|区间值|
|int1 | 355.77|
|int2 | 332.995|
|int3 | 353.71125|

以上测试将通过。对我来说完全是哑巴,但这就是它的工作原理。

这可能是因为在每行数据的末尾没有最后的
。这不是OP的原因,但可能对其他人有所帮助。

我也遇到了同样的错误,原因是单词“Outline”和冒号符号之间有空格

Scenario Outline : Convert currencies
当我移除空间时,我有这样一个:

Scenario Outline: Convert currencies
…问题就解决了


要找出违规者,请检查错误日志,您将在输出中找到错误所在的行号。我希望这有助于某人

您需要做几件事:a)删除功能:和场景大纲:关键字中的空格;和B)将场景大纲更改为场景(或为大纲添加缺少的示例)

如果运行此功能:

功能:我的框架工作的概念证明

场景:我的第一次测试 这是我的第一次测试 当这是我的第二步 那么这是最后一步 然后cucumber将输出待完成的步骤定义:

可以使用以下代码段为未定义的步骤实现步骤定义:

给定(/^这是我的第一次测试$/)做什么 挂起#在此处编写代码,将上述短语转化为具体行动 结束

当(/^这是我的第二步$/)时,请执行以下操作 挂起#在此处编写代码,将上述短语转化为具体行动 结束

然后(/^这是最后一步$/)执行 挂起#在此处编写代码,将上述短语转化为具体行动
结束

如果Jörn Horstmann的回答能解决您的问题,请接受下面的回答?我也有类似的问题,因为我添加了场景大纲,它开始工作了。我刚刚有了“场景:(Escenario:)”,但没有成功,但有了“场景大纲:(Esquema del Escenario:)”它成功了。谢谢!正确的。我有这个
Scenario Outline: Convert currencies