将昨天分享的文件夹CustomLibrary放在目录C:\Python27\Lib\site-packages\下,这样我们就可以调用自己的库了。
1、 打开rf,新建一个项目,点击File->New Project,输入名称,由于我自己的ride版本问题,不支持中文,所以项目名称一定不能用汉字,项目名称下级目录或者suit或者case名称都可以是中文,然后Type勾选directory,format勾选txt,如图:
点击ok,如图:
2、可以右击项目名称"Yanshi",还可以继续添加目录或者suit,suit下面是可以添加case的。我们继续添加一个文件夹,右击项目名称,输入新的文件夹名称"演示不同角色用户操作",format依旧选择txt,如图:
点击ok,然后右击新建的目录"演示不同角色用户操作",选择New Suite,名称是"普通用户的相关操作",如图:
点击ok,这样suite也建好了,继续右击新建的suite,"普通用户的相关操作",选择new test case。比如我们可能有十个接口,就需要建10个case,创建我们的第一个接口case,如图:
小技巧:我们在新建case时,名称前面可以加上阿拉伯数字,这样重新打开rf时,case会按照阿拉伯数字排序,当然我们也可以通过ctrl+上下键来设置case的排序。
我们的第一个case就是登录接口,如图:
4、再右击项目名称"Yanshi",选择"New Resource",名称为share_resource,format格式为txt,如图:
点击ok,如图:
这个share_resource.txt可以添加一些自己封装的关键字,等我们用到的时候再给大家详细说一下。
5、点击suite"普通用户的相关操作",如图:
这边可以添加库和resource,库可以是python提供的,也可以是我们自己封装的,如CustomLibrary,resource可以是我们刚才创建的share_resource.txt,点击Resource,如图:
输入的是../share_resource.txt,之所以这么输入是根据目录结构,大家看下:
我们创建的suite,都是txt文件,"普通用户的相关操作"与share_resource.txt不在同一级目录,share_resource.txt在"普通用户的相关操作.txt"上一级目录,
所以输入的resource的格式才是../share_resource.txt,我们接着添加一些常用的库,点击Library,如图:
大概会用到这些库
CustomLibrary库是我们自己封装的,不需要在安装了,data_center.py也是在CustomLibrary目录里,也不需要安装,只要输入路径就可以了,安装RequestsLibrary,通过命令:
pip install robotframework-requests,如果还想升级这个库,可以通过命令:
pip install --upgrade robotframework-requests,
如果升级失败,将robotframework_requests-0.3.7-py2.7.egg-info(C:\Python27\Lib\site-packages目录下),直接删掉,然后再次升级,(这个可以根据大家自己的实际情况来操作), 我的robotframework-requests版本是0.5.0,
Collections,String,json库也是系统自带的,我们还需要安装:
pip install urllib3我安装的版本是1.25.6
小技巧:如果大家想安装指定版本,可以pip install urllib3==1.25.6
如果大家不知道有哪些版本可供安装,可以pip install urllib3==100000000000,版本号数字可以写很大,这样系统就会自动把可选版本列举出来。是不是很方便。
这样库也导入好了之后,就可以写登录了,如图:
第一行:获取excel里面第一个sheet的所有数据,我们可以,通过alt+m来判断这个关键字是属于什么库,如图:
这个get the excel data 就是我们自己封装的关键字,来自于我们创建的share_resource.txt,这是展示给大家看下,现在我们来在share_resource.txt创建自己的关键字,右击share_resource.txt,选择"New User Keyword",name为 get the excel data,如图:
这个关键字有两个参数,点击Arguments,如图:
参数格式为:${arg1} | ${arg2},多个参数中间用'|'隔开,
arg1标识excel的名字,arg2为第几个sheet,0表示第一个sheet,1表示第二个sheet,依次类推;
第一行:arg2转化为整数;
第二行:读取excel,将读取的内容存在列表@{Test_Data},Read Data From Excel是data_center.py里面的函数,不会读取首行和首列,保存的是一个二维数组,
第三行:comment是个注释,也可以用"#";
第四行:通过系统关键字Get Length获取@{Test_Data}的长度;
第五行和第六行:通过关键字Set Global Variable 将变量设置为全局变量,这样这个suite下面的所有case都可以使用这个变量,我们也是通过这个方法进行接口之间传参的,之后我们还会详细演示;
小技巧:系统关键字我们只输入前面两三个字符,然后按ctrl+alt+space键,会自动关联出来
这个${Excel_Name}是我们在share_reosurce.txt定义的变量:右击share_resource.txt,选择New Scalar,输入变量名称以及excel的名称就可以了,不需要带路径,如图:
6、继续回到登录编辑框:
第二行:将${Test_Data}转化为list,通过关键字Convert To List,
第三行:通过for循环来执行excel里面每一行的数据;
:FOR ${index} IN RANGE ${Test_Data_Length}
下一行需要缩进一格,如图:
第四行:log是系统关键字,就是打印功能
第五-八行:通过关键字 Set Variable将excel里面读取的变量赋值给我们的变量;
${Test_Data}是一个二维变量,${Test_Data[0]}表示第一行的所有数据;${Test_Data[0][0]}表示第一行第一列的所有数据。
第九行:发送post请求,这个请求也是我们自己封装的关键字,还是需要在share_resource.txt添加New User Keyword,名称为send post request,主要有三个参数,域名,接口,参数值,并且有一个返回值,返回值就是响应报文,send post request内容如图:
发送post请求都是有固定格式的,先创建字典,字典的值需要传给头,然后创建别名,然后发送post请求,get请求情况相同。
第1行:通过create Dictionary 创建字典,我们系统登录的请求主要需要两个请求头,X-Requested-With=XMLHttpRequest和Content-Type=application/x-www-form-urlencoded,需要什么样的头文件格式可以看接口文档,也可以自己通过fillder抓包查看:
也可以单独放到jmeter里面调试一下。
第2行:创建session,通过关键字create session,我是把接口和域名连起来创建session
第3行:发送post请求,关键字post request,返回的值赋值给变量${request}
api就是上一步创建session用到的,headers=${dict},将创建的字典赋值给headers,headers也是系统的关键字,data=${value},data也是系统关键字;
第4行:将${request.content}的内容设置为utf-8格式,${request.content}就是接口请求的返回报文,赋值给变量${requestdata};
第5行:将${request.status_code}赋值给变量${code},就是接口请求的响应码,例如200,201,401之类的;
第6行:将${code}转化成string类型,因为之后会用这个值和一些响应码作比较,现在的值都是int类型,所以先转换成string类型;
第7行:将${code}设置为全局变量,这样其他地方都可以调用该变量了;
第8~9行:都是注释不需要管;
第10行:使用系统关键字Evaluate,Evaluate执行python的表达式,${requestdata}的实际内容是:
[{"state":"1","userId":"XXXXX","msgCode":"0","msg":""}],是一个列表;${requestdata}[0]就是{"state":"1","userId":"XXXXX","msgCode":"0","msg":""},是一个字典,这样又可以使用系统关键字来取相应的字段值了;
第11行:通过Get From Dictionary系统关键字获取userid 的值为XXXXX,
第12行:将${userid}设置为全局变量,方便其他接口使用,
这样request post请求就写完了,再次回到登录接口
7、查看登录接口内容:
第10行:这边将i+1,主要是我们一开始读取excel的时候首行和首列都未读取,但是现在要把请求返回的响应报文写入excel里面,所以需要+1;
第11行:通过自定义关键字Write to excel,将响应报文写入到excel,主要有5个参数,excel,sheet的number,行数,列数,响应报文内容,创建步骤还是和之前一样,如图:
第12行:excel里面我们写的预期结果与实际结果作比较,通过自定义关键字,partial compare,如图:
这次的这个自定义关键字,我们给了一个返回值,${ReturnResult}
第13行:预期结果和响应报文内容判断正确,打印测试成功,否则打印测试失败
预期结果都是我们用jmeter跑完,知道了正确的结果,然后写到excel里面的,现在的项目excel登录只有一个正确的用户名/密码,
现在保存一下,运行我们的接口:
哈哈,第一个登录接口的case就写好了,小伙伴们是不是觉得很简单,在之后我们还会写其他接口来调用登录的userid,并且我们的excel里面不止一条测试场景,敬请期待!!!