美文网首页
RF接口测试官方demo

RF接口测试官方demo

作者: 心无旁骛_ | 来源:发表于2018-07-11 16:10 被阅读475次

    Github地址

    RequestsLibrary是基于python requests模块做的RF库.功能强大,使用方便。
    这个Demo非常不错,适合反复观摩

    官方解释:
    RequestsLibrary是一个使用Requests HTTP客户端的Robot Framework测试库。

    【requirements.txt】
    requests
    robotframework
    robotframework-requests

    【data.json】

    {"two": 2, "one": 1, "non-ascii": "度假村"}
    

    【testcase.txt】

    *** Settings ***
    Library  Collections
    Library  String
    Library  ../src/RequestsLibrary/RequestsKeywords.py
    Library  OperatingSystem
    Library  customAuthenticator.py
    
    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   verify=${CURDIR}${/}cacert.pem
        ${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}
        # httpbin does not support this... Should Be Equal     ${jsondata['json]}     ${data}
    
    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}   verify=${CURDIR}${/}cacert.pem
        ${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 Custom Auth
        [Tags]  get
        ${auth}=    Get Custom Auth    user   passwd
        Create Custom Session    httpbin    https://httpbin.org     auth=${auth}   verify=${CURDIR}${/}cacert.pem
        ${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   verify=${CURDIR}${/}cacert.pem
        ${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 Requests with Json Data
        [Tags]  post
        Create Session  httpbin     http://httpbin.org
        &{data}=    Create Dictionary   latitude=30.496346  longitude=-87.640356
        ${resp}=     Post Request  httpbin  /post    json=${data}
        Should Be Equal As Strings  ${resp.status_code}  200
        ${jsondata}=  To Json  ${resp.content}
        Should Be Equal     ${jsondata['json']}     ${data}
    
    Put Requests with Json Data
        [Tags]  put
        Create Session  httpbin     http://httpbin.org
        &{data}=    Create Dictionary   latitude=30.496346  longitude=-87.640356
        ${resp}=     Put Request  httpbin  /put    json=${data}
        Should Be Equal As Strings  ${resp.status_code}  200
        ${jsondata}=  To Json  ${resp.content}
        Should Be Equal     ${jsondata['json']}     ${data}
    
    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 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 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
    
    Delete Requests with Json Data
        [Tags]  delete
        Create Session  httpbin     http://httpbin.org
        &{data}=    Create Dictionary   latitude=30.496346  longitude=-87.640356
        ${resp}=     Delete Request  httpbin  /delete    json=${data}
        Should Be Equal As Strings  ${resp.status_code}  200
        ${jsondata}=  To Json  ${resp.content}
        Should Be Equal     ${jsondata['json']}     ${data}
    
    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
    
    Patch Requests with Json Data
        [Tags]  patch
        Create Session  httpbin     http://httpbin.org
        &{data}=    Create Dictionary   latitude=30.496346  longitude=-87.640356
        ${resp}=     Patch Request  httpbin  /patch    json=${data}
        Should Be Equal As Strings  ${resp.status_code}  200
        ${jsondata}=  To Json  ${resp.content}
        Should Be Equal     ${jsondata['json']}     ${data}
    
    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'}
    

    相关文章

      网友评论

          本文标题:RF接口测试官方demo

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