• robotframework(3)用户关键字的使用以及接口测试实践


     一、获取APP首页信息的接口----------------------------------------------------------------------------------------------------------------------------------------

    准备工作:导入http请求、处理字典、列表的库:

    RequestsLibrary
    Collections
    具体操作:在资源文件中:定义接口服务器地址的变量、公用的关键字(如login)
    被引用:在测试套件(file)中引入该资源文件
    *** Settings ***
    Library         RequestsLibrary
    Library         Collections
    
    *** Variables ***
    ${host}         http://test.1.cn  # 测试的接口服务器地址    http://这里不能省略
    &{headerForm}   Content-Type  application/x-www-form-urlencoded  # header中传输格式是form

    准备工作:引导资源文件(统一放在资源文件的好处是:可以避免每个测试套件都要去导入库、定义相同的关键字)

    具体操作:

    1、编写用户关键字--拼接post请求,将请求的响应结果返回

    2、创建测试用例,调用post请求的关键字,接收响应数据

    3、验证响应结果(这里也是定义的用户关键字)

    *** Settings ***
    Resource        ../00Resource公共资源和业务关键字.robot
    
    *** Variables ***
    ${APIhomepage}  /homePageModule/23  # 刷新首页的接口地址
    
    *** Test Cases ***
    02未登录
      ${R1}  01request首页刷新    2.3.0
      03assert首页刷新  ${R1}
    
    *** Keywords ***
    01request首页刷新
      [Arguments]  ${userid}  ${version}=2.3.0
      Create Session  server  ${host}
      &{data}  Create Dictionary  versionNam=${version}
      ${R}  Post Request  server  ${APIhomepage}  data=${data}
      log  ${R.status_code}
      Should Be Equal As Strings  ${R.status_code}  200
      ${result}  To json  ${R.content}
      [Return]  ${result}  # 返回响应结果
    
    03assert首页刷新
      [Arguments]  ${assertR}
      ${mlst}  Get From Dictionary  ${assertR}  moduleList
      ${name}  Set Variable  ${mlst[0]['moduleName']}
      Should Be Equal As Strings  ${name}  首页banner

      ${R.content} 是moduleList的数据,不包含flag和msg

       ${R.content} 要用 To json 转换后,才能使用 Get From Dictionary  获取里面的值

    moduleList里面是列表,列表的元素又是字段,所以访问方式是${mlst[0]['moduleName']}

    二、登录APP的接口-----------------------------------------------------------------解决参数传入后接收不到得问题----------

    *** Settings ***
    Resource        00Resource公共资源和业务关键字.robot
    
    *** Variables ***
    ${APILogin}     /appLogin/queryLogin  # 登录
    &{headers}      Content-Type=application/x-www-form-urlencoded  # Content-Type=application/x-www-form-urlencoded
    
    *** Test Cases ***
    登录成功
      ${R1}  request登录  13488940619  Abc940619  2.3.0
      assert登录成功  ${R1}
    
    账号或密码不正确
    
    密码不满足策略配置
    
    *** Keywords ***
    request登录
      [Arguments]  ${mobile}  ${pwd}  ${version}
      Create Session  server  ${host}  ${headers}
      &{data}  Create Dictionary  mobile=${mobile}  password=${pwd}  versionNum=${version}
      ${R}  Post Request  server  ${APILogin}  data=${data}
      log  ${R.status_code}
      Should Be Equal As Strings  ${R.status_code}  200
      ${result}  To json  ${R.content}
      [Return]  ${result}  # 返回响应结果
    
    assert登录成功
      [Arguments]  ${assertR}
      ${mlst}  Get From Dictionary  ${assertR}  result
      ${userid}  Set Variable  ${mlst['userId']}
      ${token}  Set Variable  ${mlst['token']}
      ${userCode}  Set Variable  ${mlst['userCode']}
      log  ${token}
      ${len}  Get Length  ${token}
      Should Be True  ${len}>0
    
    assert登录失败

     

    在首次写login接口请求时,未加Content-Type,传入的参数接收不到。

    后来,在创建session时,加上了headers,指定Content-Type内容后,就能接收到参数了。

    三、修改个人信息-----------------解决了将登录后token传给下个请求使用-----------------------

     

    首先,登录后获取到token指,然后return该值,或者set global variable设置为全局变量,后续直接使用

    然后,再修改个人信息的请求中,手动创建header的字典变量,并使用登录后的token。

    最后,再发送修改个人信息的请求前,create session传入该header变量。

    说明:如果直接在suit测试套添加变量,在用例中引用时,${token}不会被识别为变量

     结果识别为token字符了,不没有接收到变量的值。

  • 相关阅读:
    基于微信红包插件的原理实现android任何APP自动发送评论(已开源)
    人家为撩妹就鼓捣个网页,我做了个约炮APP(已开源)
    android加固签名工具(源码下载)
    如何优雅的写一篇安利文-以Sugar ORM为例
    写给独立开发兄弟共勉-寂寞是19首诗和2首悲歌
    我开源了一个ios应用,你们拿去随便玩
    android用欢迎界面加载运行环境
    用c#操作Mongodb(附demo)
    sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询
    怎样阻止Linux服务器执行rm -rf /*命令
  • 原文地址:https://www.cnblogs.com/ww-xiaowei/p/13496631.html
Copyright © 2020-2023  润新知