如何在黄瓜测试的场景大纲中的示例中获取多行字符串?

时间:2011-02-20 12:18:38

标签: ruby cucumber cucumber-jvm

我想在The Scenario Outline的Examples部分中使用多行字符串。 怎么做?

例如

Scenario Outline:
  Given something
  When `<action>` happens
    I should get elaborative `<duuh>`
  Examples:
    |action|duuh|
    |"""
    tututuut
    """|"""blablabla m
    ultiline"""|

它看起来不干净既不起作用

3 个答案:

答案 0 :(得分:1)

我优先考虑黄瓜输出,而不是Gherkin 输入,尽管一等奖是两个都很漂亮。所以多行示例值对我来说没有意义,因为它们绝对破坏了黄瓜输出。

Cucumber鼓励使用doc strings的多行数据输出可读。它鼓励使用scenario outlines的数据矩阵的可读输出。我不认为它鼓励多行数据矩阵的可读输出。

如果您能够提供有关输出在这种情况下的外观的很好的示例,它们可能会在Cukes forum上得到好评。

或者,如果您要尝试的只是迭代Cucumber特征中的多行数据,请为多行数据提供助记符名称,并在Examples矩阵中提供这些助记符。Scenario Outline并将助记符视为您为胶水代码中的实际数据读取的夹具文件的名称。

答案 1 :(得分:1)

我做的是将文件中的长字符串分开(在我的例子中是json的片段),当我需要字符串时,我只需加载所需的文件。

我是用Grails做的,但应该非常相似:

  

读取文件的方法

static String getMockJsonFile(String fileName){
    new File("${BOOKING_JSON_FILES_PATH}${fileName}.json").text
}
  

Json文件

"collectionSummary": {
"attempts": [
{
"collectionMethod": {
"creditCardCollectionMethod": {
"id": 2,
"collectionMethodType": "CREDITCARD",
"creditCardType": {
"code": "CA",
"name": "Master Card Credit"
}
}
},
"billingCurrency": "EUR"
}
],
"creationDate": "2017-05-30 14:46:19",
"currency": "EUR",
"collectedAmount": 9.1
}
  

如果在文件中设置“”三重引号,则字符串结果也会包含它。

答案 2 :(得分:0)

您是否考虑在字符串中使用\ n来表示回车?