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