百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

jenkins+robotframework接口自动化实战二

toyiye 2024-06-23 18:37 14 浏览 0 评论

将昨天分享的文件夹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里面不止一条测试场景,敬请期待!!!

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码