zoukankan      html  css  js  c++  java
  • 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字符了,不没有接收到变量的值。

  • 相关阅读:
    Java for LeetCode 229 Majority Element II
    Java for LeetCode 228 Summary Ranges
    Java for LeetCode 227 Basic Calculator II
    Java for LintCode 颜色分类
    Java for LintCode 链表插入排序
    Java for LintCode 颠倒整数
    Java for LintCode 验证二叉查找树
    Java for LeetCode 226 Invert Binary Tree
    Java for LeetCode 225 Implement Stack using Queues
    Java for LeetCode 224 Basic Calculator
  • 原文地址:https://www.cnblogs.com/ww-xiaowei/p/13496631.html
Copyright © 2011-2022 走看看