当前位置: 首页 > 知识库问答 >
问题:

使用Cucumber获取空字段的“没有匹配的粘合代码”错误

诸葛砚
2023-03-14

我是cucumber新手。我想测试两个登录场景:

  1. 使用用户应该能够成功登录的有效凭据
  2. 用户应该无法登录的空用户名和密码

我有上述场景的以下代码:

Scenario Outline: Test login with valid credentials
Given Open firefox and start application
When I enter "<username>" and "<password>"
Then User should be able to login successfully

Examples: 
  | username | password |
  | ro       | mech     |

Scenario Outline: Test login with empty credentials
Given Open firefox and start application
When I enter  "<username>" and "<password>" (this shows a warning)
Then User should be not able to login 

Examples: 
  | username | password |
  |          |          |

在java文件中,我有以下代码:

@When("^I enter \"([^\"]*)\" and \"([^\"]*)\"$")
public void I_enter_and_(String username, String password) throws Throwable {
    driver.findElement(By.id("ember629")).sendKeys(username);
    driver.findElement(By.id("ember640")).sendKeys(password);

}

我的问题是,场景2显示了一条警告消息:

Step 'I enter  "<username>" and "<password>"' does not have a matching glue code

这是否意味着对于每个场景,如有效、空和无效凭据,我都需要编写一个单独的java函数?我不能使用相同的java函数:

public void I_enter_and_(String username, String password) 

对于所有场景?如果运行功能文件,则会得到以下输出:

You can implement missing steps with the snippets below:

@When("^I enter  \"([^\"]*)\" and \"([^\"]*)\"$")
public void i_enter_and(String arg1, String arg2) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

是否有任何方法可以重用java函数I\u enter\u和\u?

共有2个答案

苏承载
2023-03-14

粘合路径应正确,并与stepdef路径匹配,如下所示:

吕利
2023-03-14

首先,如果这是您的错误的实际复制/粘贴,那么在步骤中输入后,您似乎有一个额外的空间。当然,只需复制自动建议的步骤,并使用它而不是当前步骤。

另一件事是,如果您不提供多个示例,那么使用Scenario Outlinetat是没有意义的。它应该看起来更像:

Scenario Outline: Test login with valid credentials
  Given Open firefox and start application
  When I enter "<username>" and "<password>"
  Then User "<maybe>" be able to login successfully

  Examples: 
    | username | password | maybe     | 
    | ro       | mech     | shall     | 
    |          |          | shall not |
 类似资料:
  • 我将< code>cucumber-groovy与基于maven的框架一起使用,但找不到stepDefinitions的粘合点。获取在特征文件中没有匹配的粘合代码。这是cucumber专家项目。我已经将特征文件夹转换为“源文件夹”。 错误: 这是我的测试跑步者CucumberOptions:

  • 问题内容: 我想测试对象的特定字段是否与我指定的值匹配。在这种情况下,它是S3Bucket对象内的存储桶名称。据我所知,我需要为此编写一个自定义匹配器: 如果有一个更简单的方法可以做到这一点,那就好了: 谁能指出我类似的东西?我想在这种情况下我已经解决了我的问题,但这不是我第一次希望采用一种更简单的方法。 问题答案: 另外,对于更类型安全的版本,还有FeatureMatcher。在这种情况下,类似

  • 我正在Node.js中编写一个RESTAPI,使用Mongoose访问MongoDB后端数据库。我想提供一个APIendpoint,它返回与特定variationStatus匹配的数组对象数量的计数。 这是我到目前为止得到的,但它给了我一个空洞的回答。。。 这是我的模型。。。 有人帮我吗? 谢谢

  • a.从存储区提取现有证书密钥: b.从导出的证书中提取私钥: 没有证书与私钥匹配 我错过了什么?为什么我的最后一个命令不合法? 我计划执行“keytool-importkeystore”文件。p12(应该在最后一步中生成)来替换“keystore”中的“一个”privateKeyEntry。正如在如何导入Java keystore中现有的x509证书和私钥以便在SSL中使用中所建议的?。基本上,我

  • 这里是自学成才的新手程序员,请原谅我的错误。我试图让程序发送/读取串行数据,但读取部分有问题。我能够从下拉菜单中选择通信端口,并传输我需要的内容。当我开始使用大量在线示例对接收端进行编码时,它无法编译,我似乎无法找出原因。如果我完全复制QT示例中的代码,它可能会工作,但它不会做我想做的事情(即使用组合框下拉选项卡进行选择) “连接(串行、, 我试图阅读QObject和QSerialPort库帮助信

  • 我用的是Elasticsearch 7.6 我在餐厅索引中有如下文档: 计数表示收到的订单数。 当客户在网站上按菜单名称搜索时,我想给几家餐馆中菜单数量高的餐厅打高分,并将其显示在搜索结果的顶部。 要做到这一点,似乎有必要知道无痛脚本中每个文档中匹配的菜单。 我想知道这是可能的。如果是这样,我该怎么做? 更新感谢大家的回答@jaspreet chahal 我做了这样的索引: 我想做的是在使用多重匹