Robotframework 如何处理测试模板中的多行数据

Robotframework 如何处理测试模板中的多行数据,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

概述 我有一个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
           ...  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。