robotframework-自动化测试-实例7(接口API测试)

前情介绍:
接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务,目前公司里大部分的接口都是RESTful,还有一些webservice接口。现在大家也越来越多的关注接口测试了,因为有时候可能界面上的功能还没有实现,我们可以先一步对接口进行验证,提早发现一些和预期不一致的错误。做接口测试的工具很多,本质上是基于协议的测试,而最常见的接口测试基本是基于于http协议中的GET和POST请求。
在上一个列子中,我们已经了解到基于RF的协议测试库我们首推requests和requestsLibrary,所以在这个接口API测试中我们也选取requestsLibrary库。

练习环境配置
实例1(UI自动化-百度搜索)
实例2(有效登录)
实例3(无效登录)
实例4 (Appium)
实例5 (连接mysql数据库)
实例6 (GET/POST请求)
Appium Error总结
robotframework Error总结

测试需求:
测试被测系统中的两个接口(一个为GET,一个为POST)

get.png

post.png

测试设计:
测试接口的思路主要是针对于不同的输入参数是否有对应的正确返回值的一个检查。

Paste_Image.png

此例中我们仅实现输入参数合法的GET接口和输入参数不合法的POST接口作为示例。剩下的以此类推了。

此例中的GET接口输入参数需要为eid或者name,我们先选取已有的eid=1的数据作为输入,正常返回值为status 200,message:success

get返回.png

返回的是一个json数据。

POST接口需要的输入参数较多,从不合法角度出发,可以考虑只输入一个参数的情况下,返回值应该为status 10021,message:parameter error

测试实现
1 . 导入必须的库requestsLibrary和Collections
2 . 先Create Session创建一个连接到服务器的host,然后通过Get Request发起请求,请求的返回是个Request对象${r},所以在这里的变量是个对象,而对象的属性值的有${r.status_code}和${r.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值了。
3 .将 Dictionary中的值取出和预期值进行对比。
脚本如图所示:

get.png

4.如果要测试的是post的接口,也很方便。同理可得先Create Session创建一个连接到服务器的host,然后通过Post Request发起请求,请求的返回是个Request对象${r},所以在这里的变量是个对象,而对象的属性值的有${r.status_code}和${r.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值后做断言。
脚本如图所示:

post.png

在这里主要是添加了在headers里面的Content-Type=application/x-www-form-urlencoded,这是最常见的post提交数据的方式,其它方式在之后的案例中会介绍。

CC先生说:接口测试维护成本比起UI测试来说要低一些,在接口定义稳定的情况下变更不多,就算变更也能很快进行修改。所以推荐大家在考虑自动化策略的时候将接口自动化测试优先做起来,一定要在上线前跑接口自动化回归测试,某些时候能够避免一些接口变更导致的问题。

参考:
post requests的官方的帮助文档:

Source:
RequestsLibrary <test library>
Arguments:
[ alias | uri | data=None | params=None | headers=None | files=None | allow_redirects=None | timeout=None ]
Send a POST request on the session object found using the given `alias` 
alias that will be used to identify the Session object in the cache 
uri to send the POST request to 
data a dictionary of key-value pairs that will be urlencoded and sent as POST data or binary data that is sent as the raw body content or passed as such for multipart form data if files is also defined 
params url parameters to append to the uri 
headers a dictionary of headers to use with the request 
files a dictionary of file names containing file data to POST to the server 
allow_redirects Boolean. Set to True if POST/PUT/DELETE redirect following is allowed. 
timeout connection timeout

中文:

Post requests关键字的用法:
第一个格子为返回的response对象,可以赋值给一个变量
第二个格子为post requests关键字
第三个格子之后为可以带的参数 [ alias | uri | data=None | params=None | headers=None | files=None | allow_redirects=None | timeout=None ](如果不写的情况下自动留空)
alias:将用于标识缓存中的Session对象的别名,也就是上面create session时建的别名
uri:发送GET请求到的地址,可带参数
data:数据,格式为一个键值对的字典将作为POST数据或作为原始主体内容发送的二进制数据或作为多部分表单数据传递的POST数据或二进制数据发送,也可以用作multipart的数据的文件来发送
params:发送的消息体中的参数(也为字典对象)
heards:报文头,方便修改,比如content-Type (为字典对象)
file:传送到server上的文件的名称
allow_redirects:允许重定向的布尔值。 如果POST / PUT / DELETE重定向以下是允许的,请设置为True。
timeout:设置的超时时间
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,401评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,071评论 25 707
  • 今天和孩子商量,自己放学回家,孩子答应尝试。事情的起因是后期我可能会比较忙,会有不能及时赶回来接孩子的情况,孩子也...
    sanyaojing阅读 352评论 0 1
  • 妈妈和孩子 文/朱成龙 一家四口,无比完美的一...
    惜岩妖精别跑阅读 326评论 0 0