我使用Concordion来测试一些java组件。 我会写类似
的东西 <pre concordion:execute="someFunction(#TEXT, #a)">
{
id:123,
name:<span concordion:echo="#b"/>
}
</pre>
我希望#b的值被计算并动态替换。 但是someFunction中的值#b不是一个空字符串。 同样,如果使用
name:<span concordion:execute="getBValue()"/>
如果某人做过类似的事情,请你帮忙。
感谢。
答案 0 :(得分:1)
我认为Concordion不是为了这个用例而设计的。它不是模板引擎。您可以将规范的文本元素作为输入传输到自动化测试中。此外,您可以使用规范中的值作为参考,以比较被测系统的实际输出。
当你想将某个方法getBValue()的结果转移到另一个方法someFunction()时,你可能有几个选项:
<pre concordion:execute="someFunction(#TEXT, #a, #b)">
{
id:123,
name:placeholder-for-value-b
}
</pre>
&#13;
然后在someFunction()内部,您可以替换占位符:
public void someFunction(String text, String aValue, String bValue) {
text.replace("placeholder-for-value-b", bValue);
//continue logic of someFunction
}
答案 1 :(得分:0)
您可以使用execute command初始化变量#name:
<span concordion:execute="#name=getBValue()"/>
后跟echo command:
name: <span concordion:echo="name" />
或者你试过直接在echo命令中调用你的方法吗?
name: <span concordion:echo="getBValue()" />
答案 2 :(得分:0)
你的问题可能与html结构有关吗? 当您使用嵌套元素,如
<pre concordion:execute=...> <span concordion:assert-equals=...>...</span> <span concordion:set=...>...</span> </pre>
Concordion使用以下执行顺序:
这就是Concordion handles unusual sentence structures的方式。
如何将execute-command放在专用的span-tag中?
<pre> <span concordion:execute=...>...</span> <span concordion:echo=...></span> </pre>