如何在Robot Framework中将单引号(')替换为双引号(“)?

时间:2019-07-25 10:03:48

标签: robotframework

我有一个列表,项目是通过循环追加来创建的。我想将此列表用作json。问题在于该列表中的项目使用单引号,因此不能是json。

Get Order Items
    [Tags]    Get Order Items
    Set Headers    ${HEADER CUSTOMER}
    GET            ${ORDER GET BY CODE ENDPOINT}/${ORDER CODE}
    Integer        response status    200
    ${NUMBER OF ITEMS}    Output     $.number_of_items
    ${NUMBER OF ITEMS}    Evaluate  ${NUMBER OF ITEMS} + 1
    ${ORDER ITEMS}     Create List    
    :FOR    ${i}    IN RANGE  1  ${NUMBER OF ITEMS}
    \    Append To List    ${ORDER ITEMS}    ${ORDER CODE}${i}  
    Set Global Variable    ${ORDER ITEMS}

实际结果:['N19072596HB1','N19072596HB2','N19072596HB3','N19072596HB4','N19072596HB5']

预期结果:[“ N19072596HB1”,“ N19072596HB2”,“ N19072596HB3”,“ N19072596HB4”,“ N19072596HB5”]

1 个答案:

答案 0 :(得分:4)

此:['N19072596HB1','N19072596HB2','N19072596HB3','N19072596HB4','N19072596HB5']是python的列表字符串表示形式,他们选择为其使用单引号。

由于您的最终目标是在json中使用双引号版本,所以最好的选择是使用python的json库为您进行转换,而不是将双引号替换为单引号:

${list as string}=    Evaluate    json.dumps($ORDER_ITEMS)    json

(请注意,变量如何用大括号括住-因此您要将实际变量传递给方法,而不是其值)

为什么不使用简单的字符串替换?
因为您不想处理列表成员可能带有引号的情况,所以请使用单引号或双引号-例如['N19072596HB1',“ N1907'2596HB2”,'N19072596HB1','N19072“ 596HB2']。
简单的字符串替换将惨遭失败,而json库旨在按预期处理这些情况。