Python3+RobotFramework自动化测试十:接口测试

本篇使用roboot framework编写简单的接口测试用例。

接口文档

下面分别是get类型和post类型的接口:

接口1(这是一个会议信息查询接口):

http://127.0.0.1:8000/api/get_event_list
请求参数:
eid      --会议id
name  --会议名称
返回值:
{
    "data": {
    "start_time":"2020-05-23T14:00:00",
    "name":"发布会1",
    "address":"北京"
    }
    "message":"success",
    "status":200
}

接口2(这是一个参加会议人员签到接口):

http://127.0.0.1:8000/api/user_sign
请求参数:
eid      --会议id
name  --签到人员手机号
返回值:
{
    "message":"sign success",
    "status":200
}

接口测试用例

下面分别针对上面的2个接口编写一个简单测试用例,内容如下:

*** Settings ***
Library           RequestsLibrary
Library           Collections

*** Test Cases ***
test_interface_get
    ${payload}=    Create Dictionary    eid=1
    Create Session    event    http://127.0.0.1:8000/api
    ${r}=    Get Request    event    /get_event_list    params=${payload}
    Should Be Equal As Strings    ${r.status_code}    200
    log    ${r.json()}
    ${dict}    Set variable    ${r.json()}
    #断言结果
    ${msg}    Get From Dictionary    ${dict}    message
    Should Be Equal    ${msg}    success
    ${sta}    Get From Dictionary    ${dict}    status
    ${status}    Evaluate    int(200)
    Should Be Equal    ${sta}    ${status}

test_interface_post
    Create Session    sign    http://127.0.0.1:8000/api
    ${headers}    Create Dictionary    Content-Type=application/x-www-form-urlencoded
    ${payload}=    Create Dictionary    eid=11    phone=13111111111
    ${r}    Post Request    sign    /user_sign/    data=${payload}    headers=${headers}
    Should Be Equal As Strings    ${r.status_code}    200
    log    ${r.json()}
    ${dict}    Set variable    ${r.josn()}
    # 断言结果
    ${msg}    Get From Dictionary    ${dict}    message
    Should Be Equal    ${msg}    sign    success
    ${sta}    Get From Dictionary    ${dict}    status
    ${status}    Evaluate    int(200)
    Should Be Equal    ${sta}    ${status}

简单分析

首先,引用RequestsLibrary和Collections库。RequestsLibrary就是安装robotframework-requests,提供接口操作相关的关键字。Collections库是用来操作字典的,因为接口返回的数据是json格式,必须转化成字典才能进行断言。

先看下test_interface_get用例的前3行:

  ${payload}=    Create Dictionary    eid=1
    Create Session    event    http://127.0.0.1:8000/api
    ${r}=    Get Request    event    /get_event_list    params=${payload}
  • 通过Create Dictionary关键字定义字典变量${payload},字典有一个键值eid=1,该字典将会作为接口的参数。
  • Create Session关键字用来创建一个http会话服务器,通过event指定http://127.0.0.1:8000/api为该会话的基础URL。
  • Get Request关键字用来发起一个Get请求,接口URL=event+/get_event_list/,接口参数为${payload},最后将接口返回数据赋值给变量${r}
  Should Be Equal As Strings    ${r.status_code}    200
  log ${r.json()}
  • 通过${r.status_code}可以得到请求的HTTP状态码,通过Should Be Equal As Strings关键字判断其是否为200。
  • 通过${r.json()}可以将json格式的数据转化为字典,并通过log关键字打印。
    ${dict}    Set variable    ${r.json()}
    #断言结果
    ${msg}    Get From Dictionary    ${dict}    message
    Should Be Equal    ${msg}    success
    ${sta}    Get From Dictionary    ${dict}    status
    ${status}    Evaluate    int(200)
    Should Be Equal    ${sta}    ${status}

这里主要是对返回数据进行验证:

  • 将${r.json()}通过Set variable关键字赋值给变量${dict}
  • c关键字由前面引入的Collections提供,可以取到字典中key对应的value,这里获取到的message对应的值给变量${msg}。
  • Should Be Equal关键字用于比较${msg}是否等于success
  • 通过Get From Dictionary关键字获取status对应的值,并赋值给变量${sta}
  • 上一步获取到的status状态码是整数类型200,但是在robot framework中直接编写的内容为字符串,所以这里借用Evauate关键字,直接调用python的方法int()。
  • 最后比较接口返回的状态码是否等于200

第2个post接口用例是post接口,与第1个接口用例基本类似,相信大家已经可以自行分析了。

猜你喜欢

转载自www.cnblogs.com/daydayup-lin/p/12943648.html