Robotframework 如何处理测试模板中的多行数据
概述 我有一个json,它支持多行和固定列 用例:在每次迭代中提取0222&0444和0712&0786的值以输入jsonRobotframework 如何处理测试模板中的多行数据,robotframework,data-driven-tests,Robotframework,Data Driven Tests,概述 我有一个json,它支持多行和固定列 用例:在每次迭代中提取0222&0444和0712&0786的值以输入json *** Settings *** Documentation DataDriven Test Test Template Create CPR Data *** Variables *** *** Test Cases *** NPA0 CARRIER0 TEL0 scenario1 684,670,671 0222 123456789
*** Settings ***
Documentation DataDriven Test
Test Template Create CPR Data
*** Variables ***
*** Test Cases *** NPA0 CARRIER0 TEL0
scenario1 684,670,671 0222 123456789
... 622,670,671 0444 123456789 # This data is multirow and this is the requirement
scenario2 633,621,652 0712 123456789
... 626,470,671 0786 123456789
*** Keywords ***
Create CPR Data
[Arguments] ${npa_row1} ${carrier_row1} ${tel_row1}
${ReqBody_PR} set variable {"destNums":[{"NPA":"${carrier_row1}","CARRIER":"${carrier_row2}"}]}
log {ReqBody_PR}
PS:我不确定通过测试模板是否可行,只是想得到一些建议。有多种解决方案,但最简单的方法是根据数据对关键字建模。
您说过所有场景都将有2行,每行有3个元素(“列”);在这种情况下,只需使关键字包含6个参数:
*** Test Cases *** NPA1 CARRIER1 TEL1 NPA2 CARRIER2 TEL3
scenario1 684,670,671 0222 123456789
... 622,670,671 0444 123456789 # This data is multirow and this is the requirement
scenario2 633,621,652 0712 123456789
... 626,470,671 0786 123456789
*** Keywords ***
Create CPR Data
[Arguments] ${npa_row1} ${carrier_row1} ${tel_row1} ${npa_row2} ${carrier_row2} ${tel_row3}
${ReqBody_PR} set variable {"destNums":[{"NPA":"${carrier_row1}","CARRIER":"${carrier_row2}"}]} # in your original question, you were already referencing a variable carrier_row2 - but you haven't defined it already; now it works
log {ReqBody_PR}
# you can also access now the 0222 and 0444 from scenario1 directly:
Log tel1: ${tel_row1} tel2: ${tel_row2}
现在,如果出于-原因-您希望在值内有一个换行符,您可以使用
\n
字符;e、 差不多
scenario1 684,670,671 0222 123456789\n622,670,671 0444 123456789
,将被您的原始关键字接受。但是-这不是一个类似表格的数据(行和列)-第三个参数将是一个字符串,您可以先在换行符上拆分它-以获取第一行的最后一个元素,然后在空白字符上获取第二行的3个元素。这是非常繁琐和容易出错;我添加了
\n
解决方案只是为了完整性,您的问题包括了它。因此,字符串“123456789 622670671 0444 123456789”是一个值-模板关键字的一个参数,它必须在“123456789”和“622”之间有一个换行符?@Todormanakov yes!!在外行语言中,我希望在每个场景中传递两行作为数据,然后应该能够提取每个值,例如第二行第二列值,即0444选项2:我将进行更多探索,并让您知道,选项1对我来说似乎不可行,因为有时我有更多的两行。嗯,我们可以设计一个支持多行的解决方案——只要它们可以被3整除,甚至可以被整除——不管给定了多少列/行,如果它不是真正提供的矩阵的话。但是我建议你重新审视你的测试模型——如果数据长度可变,那么关键字中应该有什么逻辑来支持所有的变化;并且使用一个单一的模板来完成所有的任务是正确的。我的2c。