zoukankan      html  css  js  c++  java
  • 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个接口用例基本类似,相信大家已经可以自行分析了。

  • 相关阅读:
    SpringCloud之Eureka注册中心原理及其搭建
    微服务架构及其概念
    SpringBoot(十六)-----Springboot整合JPA
    SpringBoot(十五)-----Springboot配合JDBCTemplate实现增删改查
    MYSQL安装报错 -- 出现Failed to find valid data directory.
    SpringBoot(十四)-----异常处理
    JQuery 隔行变色
    C#断开式连接
    C# 学生表的插入操作
    C#字符串
  • 原文地址:https://www.cnblogs.com/daydayup-lin/p/12943648.html
Copyright © 2011-2022 走看看