Cucumber java - 将 .txt 文件中的字符串添加到 Cucumber 步骤定义

Cucumber java - Adding a string from .txt file to cucumber step definition

我对编程还很陌生,所以请放轻松。

我正在尝试创建一个新场景,允许我输入在文本文件中找到的短语。我目前在 stepdefinition 文件中的内容工作正常,但我想做的是编辑 Cucumber 的每个 运行 之间的文本文件。然后可以在不编辑特征文件的情况下更改搜索词。文本文件只需包含一行。

这是我当前的代码:

@And("^I enter into input field (.*) the search term (.*)$")
    public void i_enter_into_input_field_the_search_term(String field, String value) throws Throwable {
        // searches the text written in search.txt
        field = removeDoubleQuotes(field);
        value = removeDoubleQuotes(value);
        System.out.println("I enter inptu input field:"+ xpath.get(field) + " and : "+ value);
        WebElement element = getDriver().findElement(By.xpath(xpath.get(field)));
        element.clear();
        element.sendKeys("cucumber help needed");
    }

如果您总是读取同一个文件,您可以使用 Files.readAllLines(path, charset) 来读取文件内容并使用它。

我对为什么需要 .txt 文件来更改黄瓜运行之间的任何内容感到有点困惑。您要进行的更改是预定义的吗?

您似乎 运行 成功地将 .feature 文件中的字段和值参数替换到您的测试中,这很可靠。所以我假设你有像

这样的场景
Scenario: I expect this thing to happen
Given some initial step 
And I enter into input field FIELD1 the search term VALUE1
Then I expect this thing to happen

那么如果你想用不同的值重新运行相同的场景,像这样编写另一个场景,Cucumber 将只重用与该步骤定义匹配的代码。你不需要再写一个,i_enter_into_input_field_the_search_term 会重新得到。

所以你的功能文件看起来像:

Scenario: I expect this thing to happen
Given some initial step 
And I enter into input field FIELD1 the search term VALUE1
Then I expect this thing to happen

Scenario: I expect that thing to happen
Given some initial step 
And I enter into input field FIELD2 the search term VALUE2
Then I expect that thing to happen

..等等..等等..

换句话说,如果您提前知道场景中有哪些字段和值,只需将它们全部列在您的功能文件(而不是 .txt)中以涵盖您的所有场景。

我是不是漏掉了什么? 希望有所帮助。

在@Josh 的回答的基础上,您可以使用 Scenario Outline 使非常相似的场景更具可读性。

例如,他的回答中的两个场景在功能上等同于:

Scenario Outline: I expect things to happen
  Given some initial step 
  And I enter into input field <Field_Name> the search term <Value>
  Then I expect this thing to happen

  Examples:
  | Field_Name | Value  |
  | FIELD1     | VALUE1 |
  | FIELD2     | VALUE2 |

然后您可以通过向 Examples table 添加额外的行来创建更多场景。有关详细信息,请参阅 Cucumber documentation