根据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周围没有括号)返回:
|check |numeric value of| element3 ->[€ 25.14]| [25.14] expected [invalid expression: $testval1->[20.04] + $testval2->[5.1]] |
答案 0 :(得分:1)
不幸的是,你无法做你想要的事情。您分配元素值的变量实际上是SLIM symbols,而不是维基级别的变量。如果您在问题中链接到的用户指南页面上向下滚动一下,您将找到一个名为&#34;变量和SLIM符号之间的差异的部分&#34;:
- 在测试执行之前,在渲染时评估变量。这允许根据页面层次结构和纯粹输入测试的其他内容来设置值。
- 符号仅在执行时存在。它们可以在运行时更改,因此与变量不同,后者不能。
我发现FitNesse / SLIM中的三种类型的变量让人感到困惑,它们的不同用法,语法和可能性会导致很多问题。我的理解是:
${myVar}
,使用!define
定义。它们在页面渲染时获得它们的价值,所以即使在测试开始之前,当你浏览到维基页面时,你会看到它们的价值,并且只有在页面的源中你才看到它是一个变量。这些可以在markup expressions中使用,这是您在问题中尝试做的事情。@{myVar}
(或@myVar
),在SLIM场景表的第一行中定义。这些是正式参数&#39;根据场景的调用获得实际值的场景(即场景的每次使用,来自脚本表,其他场景或决策表中的行定义它们的值)。在执行第一个操作之前,它们在测试开始时获得它们的价值。当您查看定义它的场景表时,您会看到该变量。 (当您使用由table template定义的&{39; hsac-fitnesse-plugin&#39;表格类型(包含在hsac-fitnesse-fixtures项目基线中)时,您不需要定义表格第一行中的变量名称会根据表格中的出现次数(例如@{myVar}
)自动找到。)$myVar
,使用$myVar=
为其分配值。这些是运行时变量&#39;在测试执行期间获得它们的价值,它们对测试套件是全局的,并且它们的值可能在测试执行期间被更改。这是唯一一种可以从被测系统获得的属性中获取价值的变量,它们是您在问题表中使用的变量。 它们实际上是对SLIM进程内对象的引用,因此fixture可能会更改变量引用的对象的内部状态,而变量的wiki表示中没有显示此更改(这只是对象的toString) ()最后一次分配时的结果)。 P.S。当您使用hsac-fitnesse-fixture时,将字符串转换为double不需要自定义夹具(如numbers extraction
)。您可以使用库string fixture的convert 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
和{{如果您碰巧实现了这一点,则会接受列@var
或v
。在此使用花括号可确保使用完整的变量名称。