在 fitnesse ColumnFixture 中同时使用列和先前定义的值

Use both columns and previously defined values in fitnesse ColumnFixture

我的测试中的行-table 都重复相同的值,除了每行不同的两列。我想使用我之前为重复行定义的值。

Fixture 将文件上传到FTP,test-table 中的每一行现在都有用户名、密码、主机等,这些始终相同。文件名不同。

如果您的测试使用 Slim,您可以使用 constructor parameters 在 table 的第一行(即 header)中定义重复值。在这种情况下,您只需在 table 的行中定义文件名。

如果您的 table 是基于 'scenario' 的 'decision table',您还可以在 header 行中提供重复参数(使用 'having' 语法).可以在 FitNesse's own acceptance tests 中找到更多详细信息。例如:

|scenario      |Division _ _ _|numerator, denominator, quotient?|
|setNumerator  |@numerator                                      |
|setDenominator|@denominator                                    |
|$quotient=    |quotient                                        |

|Division   |having|numerator|9|
|denominator|quotient?         |
|3          |3.0               |
|2          |4.5               |

另一个选项,但当所有行的值都相同时,这似乎不太合适,是使用 baseline decision table,其中第一行定义所有列的值,后续行仅定义更改后的值.

您可以使用 FitNesse 变量:

!define username {bob}
!define password {secret}

|myfixture|
|username|password|other|stuff|
|${username}|${password}|a|b|
|${username}|${password}|c|d|
|${username}|${password}|x|y|

Fried Hoeben 的 answer 为 Slim 工作,以下答案适合:

如果您的 Fixture 是 Fixture 的 child,那么您可以通过在 header 行中添加额外的列来定义额外的参数。

|!-UploadFileToFtps-!  |ftpPassword=${password} | ftpUserName=${userName}| 
|host      |ftpDir   |localFile                |result?                                             |
|${ftpHost}|${ftpSrc}|${folder1}${file1}.xlsx  |File '${folder1}${file1}.xlsx' successfully uploaded|
|${ftpHost}|${ftpSrc}|${folder2}${file2}.xlsx  |File '${folder2}${file2}.xlsx' successfully uploaded|
|${ftpHost}|${ftpSrc}|${folder2}${file3}.pdf   |File '${folder2}${file3}.pdf' successfully uploaded |

您可以使用检索字符串数组的 getArgs() 访问这些列中的值。 我使用由“=”分隔的 key-value 对,这使我能够使用命名参数。否则我将不得不按顺序引用参数,我认为这是错误的。