Testcase level variables in [Documentation] for robot framework

不想你离开。 提交于 2020-01-12 08:48:05

问题


I cannot get test level variables to appear in documentation.

Let's say I have this testsuite:

| *Variables* |
| ${SystemUnderTest} = | Staging

| *testcase* |
| Device Test |
| | Set Test Variable   | ${device}      | iPhone
| | [Documentation]     |  Device is: ${device} |
| | ...                 |  System is: ${SystemUnderTest} |
| | No Operation

That produces this log:

TEST CASE: Device TestExpand All
Full Name:  T.Device Test
Documentation:  
Device is: ${device} System is: Staging

Notice that the Suite level variable is treated properly, but the test level one is not.
How do I get all variables to be treated equally?


回答1:


Starting with robotframework 2.7 there is a built-in keyword named Set test documentation, which can be used to replace or append to the existing documentation. This will not affect the output in the console, but the changes will be reflected in the log and report.

For example:

| *Variables* |
| ${SystemUnderTest} = | Staging

| *testcase* |
| Device Test |
| | Set Test Variable   | ${device}      | iPhone
| | [Documentation]     |  Device is: ${device} |
| | ...                 |  System is: ${SystemUnderTest} |
| | Substitute vars in documentation
| | No Operation

| *Keywords* |
| Substitute vars in documentation
| | ${doc}= | replace variables | ${test documentation}
| | set test documentation | ${doc}

For more information see http://robotframework.googlecode.com/hg/doc/libraries/BuiltIn.html?r=2.7.7#Set%20Test%20Documentation




回答2:


This solution feels a little hackerish to me, but it does give you the functionality that you want.

Test.txt

| *Setting*   | *Value*            |
              # This should start as the value for your first test
| Suite Setup | Set Suite Variable | ${device} | foo

| *Test Case* | *Action* | *Argument*
#
| T100 | [Documentation] | Should be foo: ${device}
       # Do some stuff
|      | No Operation
       # This setups the device name for the next test.
|      | Set Suite Variable | ${device} | bar 
#
| T101 | [Documentation] | Should be bar: ${device}
       # Do some stuff
|      | No Operation
|      | Set Suite Variable | ${device} | bing
#
| T102 | [Documentation] | Should be bing: ${device}
       # Do some stuff
|      | No Operation

When I run the suite I get this output:

==============================================================================
Test                                                                          
==============================================================================
T100 :: Should be foo: foo                                            | PASS |
------------------------------------------------------------------------------
T101 :: Should be bar: bar                                            | PASS |
------------------------------------------------------------------------------
T102 :: Should be bing: bing                                          | PASS |
------------------------------------------------------------------------------
Test                                                                  | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================

Having the device variable set at the end of the previous test is a little unclean, but as long you leave a comment it shouldn't be unclear at all.



来源:https://stackoverflow.com/questions/14752796/testcase-level-variables-in-documentation-for-robot-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!