*** Settings *** Resource ../../03-Variable/BifangApiVariable.txt Library REST http://${host}:${port} Library Collections Library RequestsLibrary Library json *** Keywords *** ManageApistr [Documentation] ... 描述:入口,apistr 为调用api地址 ... 本关键字的作用是判断地址前有没有加版本号,如果没有加上 ... policy/compile -> /v1/policy/compile ... /policy/compile -> /v1/policy/compile ... v1/policy/compile -> /v1/policy/compile ... /v1/policy/compile -> /v1/policy/compile [Arguments] ${apistr} ${apiStart} Evaluate '${apistr}'[0:1] ${apiStart1} Evaluate '${apistr}'[0:2] ${apistr} Run Keyword If "${apiStart}"!="/" and "${apiStart}"!="v" ... Set Variable /${version}/${apistr} ... ELSE IF "${apiStart}"=="/" and "${apiStart1}"!="/v" ... Set Variable /${version}${apistr} ... ELSE IF "${apiStart}"=="v" Set Variable /${apistr} ... ELSE IF "${apiStart1}"=="/v" Set Variable ${apistr} ... ELSE Set Variable ${apistr} log ${apistr} [Return] ${apistr} BasePostRequest [Arguments] ${apistr} ${body} Set Headers {"Authorization":"${token}","Content-Type":"application/json"} log 111111111111111111111111${apistr} &{httpResponse} Post ${apistr} ${body} #Output response body Object response body #Integer $.code 200 #Array $.data.policyList ${response} Set Variable ${httpResponse.body} [Return] ${response} BasePostRequestOK [Arguments] ${apistr} ${body} ${response} BasePostRequest ${apistr} ${body} log ${response['code']} Should Be Equal As Strings ${response['code']} 200 [Return] ${response} BasePostRequestForV2 [Arguments] ${requestUri} ${data} ${apiVersion} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/json"} create session api http://${host}:${port}/${apiVersion} ${headers} ${response}= Post Request api ${requestUri} data=${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BaseGetRequest [Arguments] ${apistr} ${body} Set Headers {"Authorization":"${token}","Content-Type":"application/json"} &{httpResponse} Get ${apistr}?${body} #Output response body Object response body #Integer $.code 200 #Array $.data.policyList ${response} Set Variable ${httpResponse.body} [Return] ${response} BaseGetRequestOK [Arguments] ${apistr} ${body} ${response} BaseGetRequest ${apistr} ${body} log ${response['code']} Should Be Equal As Strings ${response['code']} 200 [Return] ${response} BaseGetRequestForV2 [Arguments] ${requestUri} ${data} ${apiVersion} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/json"} create session api http://${host}:${port}/${apiVersion} ${headers} ${response}= Get Request api ${requestUri}?${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BaseDeleteRequest [Arguments] ${requestUri} ${data} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/json"} create session api http://${host}:${port} ${headers} ${response}= Delete Request api ${requestUri} data=${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BaseDeleteRequestOK [Arguments] ${apistr} ${body} ${response} BaseDeleteRequest ${apistr} ${body} log ${response['code']} Should Be Equal As Strings ${response['code']} 200 [Return] ${response} BaseEditRequest [Arguments] ${requestUri} ${data} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/json"} create session api http://${host}:${port} ${headers} ${response}= Put Request api ${requestUri} data=${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BaseEditRequestOK [Arguments] ${apistr} ${body} ${response} BaseEditRequest ${apistr} ${body} log ${response['code']} Should Be Equal As Strings ${response['code']} 200 [Return] ${response} BaseEditRequestForV2 [Arguments] ${requestUri} ${data} ${apiVersion} ${apiStart} Evaluate '${requestUri}'[0:1] ${requestUri} Run Keyword If "${apiStart}"=="/" set variable /${apiVersion}${requestUri} ... ELSE set variable /${apiVersion}/${requestUri} ${response} BaseEditRequest ${requestUri} ${data} [Return] ${response} #拼接字典类型数据为get请求的字符串 Dictionary-To-QueryParams [Documentation] ... 接收get参数字典,转换为请求字符串 [Arguments] ${params} ${paramsString} = Set Variable ${EMPTY} FOR ${key} IN @{params} ${value} = Get From Dictionary ${params} ${key} ${paramStr} = Catenate SEPARATOR=\= ${key} ${value} ${len} = Get Length ${paramsString} ${paramsString} = Run Keyword If ${len} != 0 Catenate SEPARATOR=& ${paramsString} ${paramStr} ... ELSE Set Variable ${paramStr} END Log To Console ${paramsString} [Return] ${paramsString} BaseFormRequest [Arguments] ${requestUri} ${data} ${apiVersion} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/x-www-form-urlencoded"} create session api http://${host}:${port}/${apiVersion} ${headers} ${response} Run Keyword If "${data}"=="${EMPTY}" Get Request api ${requestUri} ... ELSE Get Request api ${requestUri}?${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BaseFormRequest1 [Documentation] ... 下载文件专用 ... 由于下载的json存在特殊字符 ... 隐藏需要设置response.encoding='utf-8-sig' [Arguments] ${requestUri} ${data} ${apiVersion} ${headers} set variable {"Authorization":"${token}","Content-Type":"application/x-www-form-urlencoded"} create session api http://${host}:${port}/${apiVersion} ${headers} ${response} Run Keyword If "${data}"=="${EMPTY}" Get Request api ${requestUri} ... ELSE Get Request api ${requestUri}?${data} log return data =${response} ${response.encoding} set variable utf-8-sig Should Be Equal As Strings ${response.status_code} 200 ${response} json.Loads ${response.content} [Return] ${response} BaseMultipartPostRequest [Arguments] ${requestUri} ${data} ${files} ${apiVersion} ${headers} set variable {"Authorization":"${token}"} ${dataString} Dictionary-To-QueryParams ${data} create session api http://${host}:${port}/${apiVersion} ${headers} ${response}= Post Request api ${requestUri}?${dataString} files=${files} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 ${response} to json ${response.content} [Return] ${response} BasePostRequestReturnBinary [Documentation] ... 下载文件专用 ... 返回二进制数据 [Arguments] ${requestUri} ${data} ${apiVersion} Log Call BasePostRequestReturnBinary ${headers} set variable {"Authorization":"${token}","Content-Type":"application/json"} create session api http://${host}:${port}/${apiVersion} ${headers} Log ${data} ${response} Post Request api ${requestUri} data=${data} log return data =${response} Should Be Equal As Strings ${response.status_code} 200 [Return] ${response.content}