美文网首页Robot Framework及其它测试相关
Robot Framework接口测试demo大全

Robot Framework接口测试demo大全

作者: Gorden_x | 来源:发表于2017-10-30 10:04 被阅读451次

    一、需要导入的库
    *** Settings ***
    Library Collections
    Library String
    Library ../src/RequestsLibrary/RequestsKeywords.py
    Library OperatingSystem
    Suite Teardown Delete All Sessions

    二、*** Test Cases ***
    Get Requests
    [Tags] get
    Create Session google http://www.google.com
    Create Session github https://api.github.com
    ${resp}= Get Request google /
    Should Be Equal As Strings ${resp.status_code} 200
    ${resp}= Get Request github /users/bulkan
    Should Be Equal As Strings ${resp.status_code} 200
    Dictionary Should Contain Value ${resp.json()} Bulkan Evcimen

    Get Requests with Url Parameters
    [Tags] get
    Create Session httpbin http://httpbin.org
    &{params}= Create Dictionary key=value key2=value2
    ${resp}= Get Request httpbin /get params=${params}
    Should Be Equal As Strings ${resp.status_code} 200
    ${jsondata}= To Json ${resp.content}
    Should be Equal ${jsondata['args']} ${params}

    Get Requests with Json Data
    [Tags] get
    Create Session httpbin http://httpbin.org
    &{data}= Create Dictionary latitude=30.496346 longitude=-87.640356
    ${resp}= Get Request httpbin /get json=${data}
    Should Be Equal As Strings ${resp.status_code} 200
    ${jsondata}= To Json ${resp.content}
    Should Be Equal As Strings ${resp.status_code} 200

    Get HTTPS & Verify Cert
    [Tags] get get-cert
    Create Session httpbin https://httpbin.org verify=True
    ${resp}= Get Request httpbin /get
    Should Be Equal As Strings ${resp.status_code} 200

    Get HTTPS & Verify Cert with a CA bundle
    [Tags] get get-cert
    Create Session httpbin https://httpbin.org verify=${CURDIR}${/}cacert.pem
    ${resp}= Get Request httpbin /get
    Should Be Equal As Strings ${resp.status_code} 200

    Get HTTPS with Client Side Certificates
    [Tags] get get-cert
    @{client_certs}= Create List ${CURDIR}${/}clientcert.pem ${CURDIR}${/}clientkey.pem
    Create Client Cert Session crtsession https://server.cryptomix.com/secure client_certs=@{client_certs}
    ${resp}= Get Request crtsession /
    Should Be Equal As Strings ${resp.status_code} 200

    Get With Auth
    [Tags] get get-cert
    ${auth}= Create List user passwd
    Create Session httpbin https://httpbin.org auth=${auth}
    ${resp}= Get Request httpbin /basic-auth/user/passwd
    Should Be Equal As Strings ${resp.status_code} 200
    Should Be Equal As Strings ${resp.json()['authenticated']} True

    Get With Digest Auth
    [Tags] get get-cert
    ${auth}= Create List user pass
    Create Digest Session httpbin https://httpbin.org auth=${auth} debug=3
    ${resp}= Get Request httpbin /digest-auth/auth/user/pass
    Should Be Equal As Strings ${resp.status_code} 200
    Should Be Equal As Strings ${resp.json()['authenticated']} True

    Post Request With URL Params
    [Tags] post
    Create Session httpbin http://httpbin.org
    &{params}= Create Dictionary key=value key2=value2
    ${resp}= Post Request httpbin /post params=${params}
    Should Be Equal As Strings ${resp.status_code} 200

    Post Request With No Data
    [Tags] post
    Create Session httpbin http://httpbin.org
    ${resp}= Post Request httpbin /post
    Should Be Equal As Strings ${resp.status_code} 200

    Put Request With No Data
    [Tags] put
    Create Session httpbin http://httpbin.org
    ${resp}= Put Request httpbin /put
    Should Be Equal As Strings ${resp.status_code} 200

    Post Request With No Dictionary
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    Set Test Variable ${data} some content
    ${resp}= Post Request httpbin /post data=${data}
    Should Be Equal As Strings ${resp.status_code} 200
    Should Contain ${resp.text} ${data}

    Put Request With URL Params
    [Tags] put
    Create Session httpbin http://httpbin.org
    &{params}= Create Dictionary key=value key2=value2
    ${resp}= Put Request httpbin /put params=${params}
    Should Be Equal As Strings ${resp.status_code} 200

    Put Request With No Dictionary
    [Tags] put
    Create Session httpbin http://httpbin.org
    Set Test Variable ${data} some content
    ${resp}= Put Request httpbin /put data=${data}
    Should Be Equal As Strings ${resp.status_code} 200
    Should Contain ${resp.text} ${data}

    Post Requests
    [Tags] post
    Create Session httpbin http://httpbin.org
    &{data}= Create Dictionary name=bulkan surname=evcimen
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Post Request httpbin /post data=${data} headers=${headers}
    Dictionary Should Contain Value ${resp.json()['form']} bulkan
    Dictionary Should Contain Value ${resp.json()['form']} evcimen

    Post With Unicode Data
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    &{data}= Create Dictionary name=度假村
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Post Request httpbin /post data=${data} headers=${headers}
    Dictionary Should Contain Value ${resp.json()['form']} 度假村

    --post请求对比返回关键字(返回字典型)
    Post Request With Unicode Data
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    &{data}= Create Dictionary name=度假村
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Post Request httpbin /post data=${data} headers=${headers}
    Dictionary Should Contain Value ${resp.json()['form']} 度假村

    Post Request With Binary Data in Dictionary
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    ${file_data}= Get Binary File ${CURDIR}${/}data.json
    &{data}= Create Dictionary name=${file_data.strip()}
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Post Request httpbin /post data=${data} headers=${headers}
    Log ${resp.json()['form']}
    Should Contain ${resp.json()['form']['name']} \u5ea6\u5047\u6751

    --post请求返回对比(返回字符串型)
    Post Request With Binary Data
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    ${data}= Get Binary File ${CURDIR}${/}data.json
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Post Request httpbin /post data=${data} headers=${headers}
    Log ${resp.json()['form']}
    ${value}= evaluate list(${resp.json()}['form'].keys())[0]
    Should Contain ${value} 度假村

    Post Request With Arbitrary Binary Data
    [Tags] post
    Create Session httpbin http://httpbin.org debug=3
    ${data}= Get Binary File ${CURDIR}${/}randombytes.bin
    &{headers}= Create Dictionary Content-Type=application/octet-stream Accept=application/octet-stream
    ${resp}= Post Request httpbin /post data=${data} headers=&{headers}
    # TODO Compare binaries. Content is json with base64 encoded data
    Log "Success"

    Post With File
    [Tags] post
    Create Session httpbin http://httpbin.org
    ${file_data}= Get Binary File ${CURDIR}${/}data.json
    &{files}= Create Dictionary file=${file_data}
    ${resp}= Post Request httpbin /post files=${files}
    ${file}= To Json ${resp.json()['files']['file']}
    Dictionary Should Contain Key ${file} one
    Dictionary Should Contain Key ${file} two

    Post Request With File
    [Tags] post
    Create Session httpbin http://httpbin.org
    ${file_data}= Get Binary File ${CURDIR}${/}data.json
    &{files}= Create Dictionary file=${file_data}
    ${resp}= Post Request httpbin /post files=${files}
    ${file}= To Json ${resp.json()['files']['file']}
    Dictionary Should Contain Key ${file} one
    Dictionary Should Contain Key ${file} two

    Post Request With Data and File
    [Tags] post
    Create Session httpbin http://httpbin.org
    &{data}= Create Dictionary name=mallikarjunarao surname=kosuri
    Create File foobar.txt content=foobar
    ${file_data}= Get File foobar.txt
    &{files}= Create Dictionary file=${file_data}
    ${resp}= Post Request httpbin /post files=${files} data=${data}
    Should Be Equal As Strings ${resp.status_code} 200

    Put Requests
    [Tags] put
    Create Session httpbin http://httpbin.org
    &{data}= Create Dictionary name=bulkan surname=evcimen
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Put Request httpbin /put data=${data} headers=${headers}
    Dictionary Should Contain Value ${resp.json()['form']} bulkan
    Dictionary Should Contain Value ${resp.json()['form']} evcimen

    Head Request
    [Tags] head
    Create Session httpbin http://httpbin.org
    ${resp}= Head Request httpbin /headers
    Should Be Equal As Strings ${resp.status_code} 200

    Options Request
    [Tags] options
    Create Session httpbin http://httpbin.org
    ${resp}= Options Request httpbin /headers
    Should Be Equal As Strings ${resp.status_code} 200
    Dictionary Should Contain Key ${resp.headers} allow

    Delete Request With URL Params
    [Tags] delete
    Create Session httpbin http://httpbin.org
    &{params}= Create Dictionary key=value key2=value2
    ${resp}= Delete Request httpbin /delete ${params}
    Should Be Equal As Strings ${resp.status_code} 200

    Delete Request With No Data
    [Tags] delete
    Create Session httpbin http://httpbin.org
    ${resp}= Delete Request httpbin /delete
    Should Be Equal As Strings ${resp.status_code} 200

    Delete Request With Data
    [Tags] delete
    Create Session httpbin http://httpbin.org debug=3
    &{data}= Create Dictionary name=bulkan surname=evcimen
    ${resp}= Delete Request httpbin /delete data=${data}
    Should Be Equal As Strings ${resp.status_code} 200
    Log ${resp.content}
    Comment Dictionary Should Contain Value ${resp.json()['data']} bulkan
    Comment Dictionary Should Contain Value ${resp.json()['data']} evcimen

    Patch Requests
    [Tags] patch
    Create Session httpbin http://httpbin.org
    &{data}= Create Dictionary name=bulkan surname=evcimen
    &{headers}= Create Dictionary Content-Type=application/x-www-form-urlencoded
    ${resp}= Patch Request httpbin /patch data=${data} headers=${headers}
    Dictionary Should Contain Value ${resp.json()['form']} bulkan
    Dictionary Should Contain Value ${resp.json()['form']} evcimen

    Get Request With Redirection
    [Tags] get
    Create Session httpbin http://httpbin.org debug=3
    ${resp}= Get Request httpbin /redirect/1
    Should Be Equal As Strings ${resp.status_code} 200

    ${resp}=  Get Request  httpbin  /redirect/1  allow_redirects=${true}
    Should Be Equal As Strings  ${resp.status_code}  200
    

    Get Request Without Redirection
    [Tags] get
    Create Session httpbin http://httpbin.org
    ${resp}= Get Request httpbin /redirect/1 allow_redirects=${false}
    ${status}= Convert To String ${resp.status_code}
    Should Start With ${status} 30

    Options Request With Redirection
    [Tags] options
    Create Session httpbin http://httpbin.org
    ${resp}= Options Request httpbin /redirect/1
    Should Be Equal As Strings ${resp.status_code} 200
    ${resp}= Options Request httpbin /redirect/1 allow_redirects=${true}
    Should Be Equal As Strings ${resp.status_code} 200

    Head Request With Redirection
    [Tags] head
    Create Session httpbin http://httpbin.org
    ${resp}= Head Request httpbin /redirect/1 allow_redirects=${true}
    Should Be Equal As Strings ${resp.status_code} 200

    Head Request Without Redirection
    [Tags] head
    Create Session httpbin http://httpbin.org
    ${resp}= Head Request httpbin /redirect/1
    ${status}= Convert To String ${resp.status_code}
    Should Start With ${status} 30
    ${resp}= Head Request httpbin /redirect/1 allow_redirects=${false}
    ${status}= Convert To String ${resp.status_code}
    Should Start With ${status} 30

    Post Request With Redirection
    [Tags] post
    Create Session jigsaw http://jigsaw.w3.org
    ${resp}= Post Request jigsaw /HTTP/300/302.html
    Should Be Equal As Strings ${resp.status_code} 200
    ${resp}= Post Request jigsaw /HTTP/300/302.html allow_redirects=${true}
    Should Be Equal As Strings ${resp.status_code} 200

    Post Request Without Redirection
    [Tags] post
    Create Session jigsaw http://jigsaw.w3.org debug=3
    ${resp}= Post Request jigsaw /HTTP/300/302.html allow_redirects=${false}
    ${status}= Convert To String ${resp.status_code}
    Should Start With ${status} 30

    Put Request With Redirection
    [Tags] put
    Create Session jigsaw http://jigsaw.w3.org debug=3
    ${resp}= Put Request jigsaw /HTTP/300/302.html
    Should Be Equal As Strings ${resp.status_code} 200
    ${resp}= Put Request jigsaw /HTTP/300/302.html allow_redirects=${true}
    Should Be Equal As Strings ${resp.status_code} 200

    Put Request Without Redirection
    [Tags] put
    Create Session jigsaw http://jigsaw.w3.org
    ${resp}= Put Request jigsaw /HTTP/300/302.html allow_redirects=${false}
    ${status}= Convert To String ${resp.status_code}
    Should Start With ${status} 30

    Do Not Pretty Print a JSON object
    [Tags] json
    Comment Define json variable.
    &{var}= Create Dictionary key_one=true key_two=this is a test string
    ${resp}= Get Request httpbin /get params=${var}
    Set Suite Variable ${resp}
    Should Be Equal As Strings ${resp.status_code} 200
    ${jsondata}= To Json ${resp.content}
    Dictionaries Should Be Equal ${jsondata['args']} ${var}

    Pretty Print a JSON object
    [Tags] json
    Comment Define json variable.
    Log ${resp}
    ${output}= To Json ${resp.content} pretty_print=True
    Log ${output}
    Should Contain ${output} "key_one": "true"
    Should Contain ${output} "key_two": "this is a test string"
    Should Not Contain ${output} {u'key_two': u'this is a test string', u'key_one': u'true'}

    Set Pretty Print to non-Boolean value
    [Tags] json
    Comment Define json variable.
    Log ${resp}
    ${output}= To Json ${resp.content} pretty_print="Hello"
    Log ${output}
    Should Contain ${output} "key_one": "true"
    Should Contain ${output} "key_two": "this is a test string"
    Should Not Contain ${output} {u'key_two': u'this is a test string', u'key_one': u'true'}

    三、此为转载,防止原文链接失效。
    原文地址:https://github.com/bulkan/robotframework-requests/blob/master/tests/testcase.txt
    再次感谢大佬,有不懂的地方多跑跑这些demo,真的很管用。

    相关文章

      网友评论

      • Gorden_x:君子知命,自强不息。 可以关注下我的个人网站哦: xiemuxu.com

      本文标题:Robot Framework接口测试demo大全

      本文链接:https://www.haomeiwen.com/subject/wgcqpxtx.html