当使用json库并且列表与unicode字符混合时,列表输出未在机器人框架中识别自定义库

时间:2017-11-21 16:17:12

标签: robotframework

这里有三个文件list.robot,code.json是输入文件,库文件compareLib.py 当我运行这个程序时,它总是返回False,我期待真实,因为列表中存在30 所有文件都存在于同一文件夹中

list.robot文件

*** Settings ***
Library  SudsLibrary
Library  JSONLibrary
Library  OperatingSystem
Library  compareLib.py

*** Test Cases ***
test json data1
        # load file in json object
        ${json_obj}=    Get file  code.json
        ${obj}=  evaluate    json.loads('''${json_obj}''')    json
        log  ${obj}
        ${value} =   Get Value From Json    ${obj}  $..code_id
        #variable ${value} return list [20,30,40] from code.json file
        log to console   ${value}
        ${compare}  set variable  30
        ${contain} =  contain_number  ${value}  ${compare}
        log to console  ${contain}

示例code.json文件从数组开始'['然后是三个块{}然后是数组关闭块']'

lib文件

这里arg1是列表[20,30,40],arg2是30,我期待True,但它返回false

def contain_number(arg1,arg2):
    if arg2 in arg1:
        return True
    else:
        return False

1 个答案:

答案 0 :(得分:0)

问题是当你将$ {compare}变量从robotframework传递给python函数时,它就像unicode字符串一样

所以comaprison就像这样 ([30,40,30],u' 30')

U' 30'在$ {Value}列表中找不到。

所以我已经将从robotframework传递的字符串转换为Python文件中的整数,现在应该可以正常工作

def contain_number(arg1,arg2):
    arg2=int(arg2)
    if arg2 in arg1:
        return True
    else:
        return arg1,arg2,False