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字符了,不没有接收到变量的值。

 

posted @ 2020-08-13 15:23  幸福在今天  阅读(293)  评论(0编辑  收藏  举报