java - 在 BDD 中使用不同类型的参数调用相同的步骤

标签 java selenium selenium-webdriver cucumber bdd

我正在使用 BDD 编写测试用例。我遇到了一个被困住的场景

我正在使用以下步骤生成随机数据

When generate random data for registration form

有一个 Bean 类,其中有一些字段,例如 fname、lname、email、pass 当我调用上面的步骤时,它会生成随机数据并填充该 bean 类

现在它返回该 bean 类对象,我将其存储在 formdata 变量中

And store into 'formdata'

现在我想将其发送到我的用户名字段,如下所示

And enter firstname as '${formdata}'

相同的代码步骤:

@QAFTestStep(stepName = "enterFirstName", description = "enter firstname as {0}")
public void enterFirstName(Map<String, Object> data) {
    sendKeys(data.get("firstname").toString(), element);
}

它工作正常,但假设在某些情况下我必须只发送如下字符串

And enter firstname as 'Narendra'

步骤是:

@QAFTestStep(stepName = "enterFirstName", description = "enter firstname as {0}")
public void enterFirstName(String fname) {

    sendKeys(fname, element);

}

那么我如何将这两个代码作为单一方法进行管理?

最佳答案

我也有类似的需求,需要生成随机字符串以获得更广泛的输入覆盖范围。我建议形成一个基于分隔符的逻辑。

示例:

public static void main(String[] arg) {
    enterFirstName("iamkenos");
    enterFirstName("${formdata}");
}

public static void enterFirstName(String fname) {
    System.out.println(transformData(fname));
}

public static String transformData(String data) {
    Pattern pattern = Pattern.compile("^\\$\\{.+}$");
    Matcher matcher = pattern.matcher(data);

    if (matcher.matches()) {
        //do some logic on your data;
        data = "my new data 123";
    }

    return data;
}

但是,这将要求您:

  • 每次调用transformData(arg)
  • 坚持固定的分隔符,例如${}

    输出:

    iamkenos
    my new data 123
    
  • 关于java - 在 BDD 中使用不同类型的参数调用相同的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50735306/

    相关文章:

    java - 如何从 Glassfish 虚拟服务器配置访问 "properties"?

    java - 向 Jtable 添加一个监听器,该监听器在填充表时仅调用一次

    Java 和 ExtentReport : how to add New line in JSON format

    c# - 保存 chrome cookies Selenium

    java - 参数、 setter 和 getter

    java - 带有 JScrollPane 和原型(prototype)单元格值的 JList 包裹元素名称(用点替换而不是显示水平滚动条),为什么?

    java - WebDriverException : It is impossible to create a new session because 'createSession' which takes HttpClient, InputStream 和 long 未找到

    selenium-webdriver - DevTools客户端实现: subscribing a listener to the already connected DevToolsClient

    google-chrome - Selenium - 未捕获的 WebDriverError : chrome not reachable

    c# - 在 Selenium C# 中获取表格单元格值