目前我正在Python Lettuce中编写一些集成测试。我想为一些XML的比较创建一个通用的步骤。
我知道在步骤定义之后的.feature文件中
Scenario: I want to compare XML's...
...
And I check generated transaction "XYZ" contents with parameters:
...
我可以添加step.hashes,这将在步骤定义中的step.hashes属性中可用(some_step_definitions.py bellow)
@step(u'And I check generated transaction "([^"]+)" contents with parameters:$')
def check_generated_content(step, transaction_type):
*(some xml mappings for comparision, appending dictionaries to step.hashes)*
for item in mappings:
step.hashes.append({
'key1': 'val1',
'key2': 'val2'
})
我的问题是:是否可以在步骤代码(check_generated_content)中追加标题(key1,key2),当执行测试时,我在测试报告中有标题,如:
Scenario: I want to compare XML's...
...
And I check generated transaction "XYZ" contents with parameters:
| key1 | key2 |
| val1 | val2 |
...
当我没有指定
时And I check generated transaction "XYZ" contents with parameters:
| key1 | val1 |
在功能文件中,我收到了测试报告:
And I check generated transaction "XYZ" contents with parameters:
| | |
| | |
总之..我只想写
And I check generated transaction "XYZ" contents with parameters:
而不是
And I check generated transaction "XYZ" contents with parameters:
| key1 | val1 |
每一次。
答案 0 :(得分:0)
所以在写这篇文章的同时,我提出了解决方案。这很容易...... 在步骤代码定义中我需要添加的是步骤键的默认值
step.keys = [ 'key1', 'val1' ]
然后我可以将哈希附加到step.hashes。之后我用behave_as方法执行了步骤
step.behave_as(step.sentence + '\n' + step.represent_hashes())
所有内容都在测试输出中精美打印。