使用Fitnesse进行可变分配和简单算术

时间:2017-06-28 08:51:15

标签: fitnesse acceptance-testing

根据user guide,可以为变量赋值,然后执行简单的算术。

想象一下,我已经设计了夹具以在页面上取一个元素并将数值提取为Double(我现在使用HSAC Slim BrowserTest夹具和我自己的代码执行此操作)

|script       |numbers extraction   |
|$testval1=   |numeric value of|element1              | |
|$testval2=   |numeric value of|element2              | |

运行这个给我一些类似的东西:

|script       |numbers extraction   |
|$testval1<-[20.04]   |numeric value of|element1 ->[€ 20,04]  | |
|$testval2<-[5.1]     |numeric value of|element2 ->[€ 5,1]    | |

现在说我想比较两个双打的总和与第三个元素的数值:

|script       |numbers extraction    |
|check    |numeric value of|  element3   | {=${ ${testval1} + ${testval2} =}   |

无论我在最后一个单元格中使用括号和美元符号的组合,我总是得到'无效表达'。

  • $ {= $ testval1 + $ testval2 =} 表达式无效:$ testval1 + $ testval2
  • {$ {= $ testval1 + $ testval2 =}} {表达式无效:$ testval1 + $ testval2}
  • $ {= $ {testval1} + $ {testval2} =} [表达式无效:未定义变量:testval1 + undefined variable:testval2]
  • $ {=! - $ testval1-! +! - $ testval2-! =} 表达式无效:$ testval1 + $ testval2
  • $ {=! - $ {testval1} - ! +! - $ {testval2} - ! =} 表达式无效:$ {testval1} + $ {testval2}

运行最后一行(testval1和testval2周围没有括号)返回:

|check    |numeric value of|  element3  ->[€ 25.14]| [25.14] expected [invalid expression: $testval1->[20.04] + $testval2->[5.1]] |

2 个答案:

答案 0 :(得分:1)

不幸的是,你无法做你想要的事情。您分配元素值的变量实际上是SLIM symbols,而不是维基级别的变量。如果您在问题中链接到的用户指南页面上向下滚动一下,您将找到一个名为&#34;变量和SLIM符号之间的差异的部分&#34;:

  
      
  • 在测试执行之前,在渲染时评估变量。这允许根据页面层次结构和纯粹输入测试的其他内容来设置值。
  •   
  • 符号仅在执行时存在。它们可以在运行时更改,因此与变量不同,后者不能。
  •   

我发现FitNesse / SLIM中的三种类型的变量让人感到困惑,它们的不同用法,语法和可能性会导致很多问题。我的理解是:

  1. Markup variables(又名维基变量)。例如${myVar},使用!define定义。它们在页面渲染时获得它们的价值,所以即使在测试开始之前,当你浏览到维基页面时,你会看到它们的价值,并且只有在页面的源中你才看到它是一个变量。这些可以在markup expressions中使用,这是您在问题中尝试做的事情。
  2. Scenario个参数。例如,@{myVar}(或@myVar),在SLIM场景表的第一行中定义。这些是正式参数&#39;根据场景的调用获得实际值的场景(即场景的每次使用,来自脚本表,其他场景或决策表中的行定义它们的值)。在执行第一个操作之前,它们在测试开始时获得它们的价值。当您查看定义它的场景表时,您会看到该变量。 (当您使用由table template定义的&{39; hsac-fitnesse-plugin&#39;表格类型(包含在hsac-fitnesse-fixtures项目基线中)时,您不需要定义表格第一行中的变量名称会根据表格中的出现次数(例如@{myVar})自动找到。)
  3. SLIM symbols。例如$myVar,使用$myVar=为其分配值。这些是运行时变量&#39;在测试执行期间获得它们的价值,它们对测试套件是全局的,并且它们的值可能在测试执行期间被更改。这是唯一一种可以从被测系统获得的属性中获取价值的变量,它们是您在问题表中使用的变量。 它们实际上是对SLIM进程内对象的引用,因此fixture可能会更改变量引用的对象的内部状态,而变量的wiki表示中没有显示此更改(这只是对象的toString) ()最后一次分配时的结果)。
  4. P.S。当您使用hsac-fitnesse-fixture时,将字符串转换为double不需要自定义夹具(如numbers extraction)。您可以使用库string fixtureconvert to double方法。

答案 1 :(得分:0)

您似乎正在使用浏览器测试,这是我接受的HSAC安装吗?请在问题中提及这一点,因为HSAC是FitNesse夹具。

无论如何,删除大括号应该可以解决问题。使用大括号,它需要一个全局变量,即使用!define var {foo}

实现的变量

当使用不带大括号的变量时,必须在测试中调用本地定义的变量(例如|$bar=|value of|foo|)。

|$bar=|value of|foo|
|enter|$bar|as|inputField|

在此处查找有关HSAC用法的更多内容:https://github.com/fhoeben/hsac-fitnesse-fixtures/wiki/2.-Slim-Fixtures

旁注: 然后还有使用@var@{var}的表格模板,其中首选使用@{var},因为@{var}会查找列var和{{如果您碰巧实现了这一点,则会接受列@varv。在此使用花括号可确保使用完整的变量名称。