<br><br><div class="gmail_quote">2009/9/11 Pekka Klärck <span dir="ltr">&lt;<a href="mailto:peke@iki.fi">peke@iki.fi</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

2009/9/11 Laurent Ploix &lt;<a href="mailto:laurent.ploix@gmail.com">laurent.ploix@gmail.com</a>&gt;:<br>
<div><div></div><div class="h5">&gt; 2009/9/11 Pekka Klärck &lt;<a href="mailto:peke@iki.fi">peke@iki.fi</a>&gt;<br>
&gt;&gt; 2009/9/10 Laurent Ploix &lt;<a href="mailto:laurent.ploix@gmail.com">laurent.ploix@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; 2009/9/10 Pekka Klärck &lt;<a href="mailto:peke@iki.fi">peke@iki.fi</a>&gt;<br>
&gt;&gt; &gt;&gt; 2009/7/29 Laurent Ploix &lt;<a href="mailto:laurent.ploix@gmail.com">laurent.ploix@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; As far as I understand:<br>
&gt;&gt; &gt;&gt; &gt; - Robot will take a number of scenarios, and for each of them, it<br>
&gt;&gt; &gt;&gt; &gt; will<br>
&gt;&gt; &gt;&gt; &gt; stop<br>
&gt;&gt; &gt;&gt; &gt; at the first error/failure.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; It&#39;s true that the framework stops executing a single tests when a<br>
&gt;&gt; &gt;&gt; keyword it executes fails. These keyword can, however, internally do<br>
&gt;&gt; &gt;&gt; as many checks it wants and decide when to stop. We are also planning<br>
&gt;&gt; &gt;&gt; to add support to continue execution after failures in the future [1].<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt; Well, for me, this looks like a very annoying thing. I prefer to see the<br>
&gt;&gt; &gt; fixture (library) being in charge of accessing the tested software<br>
&gt;&gt; &gt; (doing<br>
&gt;&gt; &gt; sg, extracting data from it), and the framework being in charge of<br>
&gt;&gt; &gt; checking<br>
&gt;&gt; &gt; the validity of the returned data.<br>
&gt;&gt;<br>
&gt;&gt; How can any generic framework know what data is valid without someone<br>
&gt;&gt; telling it?<br>
&gt;<br>
&gt;<br>
&gt; Because, in the scenario that you describe, you tell the framework which<br>
&gt; data you expect.<br>
&gt; like<br>
&gt; fixture Add<br>
&gt; op1   |   op2   | result?<br>
&gt; 1      |     2     |     3<br>
<br>
</div></div>Even here you tell to the framework that the correct result is 3.<br>
Personally I don&#39;t see what&#39;s the benefit in the framework itself<br>
verifying the result compared to it just calling a keyword in a<br>
library/fixture that verifies it. The biggest benefit of the latter<br>
approach is that the test data is always in the same format regardless<br>
of the test style (workflow, data-driven, BDD), which makes it a lot<br>
easier to create other tools that understand the data. I believe the<br>
biggest reason there still is no generic test data editor for Fitnesse<br>
is that the data can be in so many formats. Tool support is really<br>
important when you start having more tests, and that&#39;s why we are<br>
currently working actively to make RIDE [1] better.<br>
<br>
[1] <a href="http://code.google.com/p/robotframework-ride" target="_blank">http://code.google.com/p/robotframework-ride</a><br>
<div><div></div><div class="h5"><br>
&gt;&gt; &gt; In other terms, I would like to do sg like:<br>
&gt;&gt; &gt; - Do something<br>
&gt;&gt; &gt; - Extract data x, y, z and check that x=1, y=2, z=3<br>
&gt;&gt; &gt; ... with the scenario describing the expected data, the fixture<br>
&gt;&gt; &gt; extracting<br>
&gt;&gt; &gt; data x, y, z, and the framework telling me if that&#39;s correct data or not<br>
&gt;&gt; &gt; (with a report).<br>
&gt;&gt;<br>
&gt;&gt; You can do all this with Robot Framework but the actual verification<br>
&gt;&gt; is always done on libraries. The framework has many built-in keywords<br>
&gt;&gt; for verifications, but even when you use them the framework is still<br>
&gt;&gt; just executing keywords and catching possible exceptions.<br>
&gt;<br>
&gt; Understood. But I don&#39;t find that convenient.<br>
&gt; Let me take an example.<br>
&gt; You test a software that calculates lots of data. You want to see what data<br>
&gt; is wrong.<br>
&gt; I find I much more convenient to have<br>
&gt; - a fixture that extracts calculated data (but does not verification),<br>
&gt; - a scenario that tells you what data you want to extract and what result<br>
&gt; you expect<br>
&gt; - a framework that matches both and create a report<br>
&gt; Then, you get many good things for free:<br>
&gt; - You don&#39;t have to code any verification logic in the fixture. Fixtures<br>
&gt; tend to be simpler (i.e. : get the input, do action, get outputs)<br>
&gt; - You can see how many failures you get; which ones, etc... (it&#39;s meaningful<br>
&gt; to see how many failures you have. Having one wrong data or all of them does<br>
&gt; not involve same type of debug)<br>
<br>
</div></div>We seen to have different preferences on what&#39;s important. I don&#39;t<br>
care too much about adding the verification to the fixture as it&#39;s<br>
normally enough to do something like &quot;if result != expected: raise<br>
Exception(error_message)&quot;. On the other hand I consider the fact that<br>
the fixture is strongly coupled to the test data format a really big<br>
problem. It&#39;s not just that creating editors for the data is harder<br>
when there are many data formats, but it also means that you cannot<br>
reuse fixtures as freely because they are compatible only with one<br>
kind of tests.<br>
<br>
I got a feeling that without a concrete examples this discussion is<br>
not going to get too much further. I agree to disagree on what&#39;s<br>
important on framework design, and also believe it&#39;s just a good thing<br>
there are different frameworks with different approaches.<br>
<br>
Cheers,<br>
    .peke<br>
</blockquote></div><br>Yes, I agree to disagree :-) and it&#39;s good to have different tools for different problems.<div><br></div><div>I wish Robot Framework good success.</div><div><br></div><div>I hope to come with a proposal some day, if I can open source an internal development.<br clear="all">

<br>-- <br>Laurent Ploix<br><br><a href="http://lauploix.blogspot.com/">http://lauploix.blogspot.com/</a><br>
</div>