RF是做接口测试的一个非常方便的工具,我们只需要写好发送报文的脚本,就可以灵活的对接口进行测试。

做接口测试我们需要做如下工作:

1、拼接发送的报文

2、发送请求的方法

3、对结果进行判断

我们先按步骤实现,再进行RF操作的优化。

现在就让我们来完成一个拼接发送报文的方法,这个方法也是小编和同事聊天时无意聊到的,很巧,不知道各位想到没有,反正小编没想到^_^,话不多说,先上代码:


#coding: utf-8 import json class JsonModify(object): def __init__(self):
pass
def post_info(self, *parameters):
jsonStr = {}
strDict = 'jsonStr'
for parameter in parameters:
# print(strDict + parameter)
try:
exec(strDict + parameter)
except:
print 'Expression execute failed![',strDict + parameter,']'
raise
return json.dumps(jsonStr)

现在我们来分析一下上面的代码:

首先我们定义了一个post_info函数,参数传的 *parameters可变参数,也就是说我们在传参的时候可以传任意多个参数。

1、我们先定义了一个空的字典jsonStr

2、注意,接下来的操作很有意思,就是这里做了一步“很无聊”的赋值操作——把字典名字作为字符串传给了一个变量:strDict = ‘jsonStr’

3、接下来,我们遍历可变参数(列表),try except属于Python异常处理的知识,很容易,大家可以自己看一下。

exec译为“执行文本中的Python语句”,也就是说其实我们对传参是有要求的,我们要执行 ‘strDict + parameter’ 这个Python语句,如果无法执行,则走except语句:打印原因并报错(raise)

4、最后利用json库中的dumps方法把字典转换为字符串(字符串转字典为loads)并返回。

接下来是以前讲过的,先在robot   Library中导入类名JsonModify,然后在测试用例中直接调用函数,函数在调用时下划线其实是可以不写或者用空格代替的

注意我们的传参,注意我们的传参,注意我们的传参

发现参数的特别之处了吗?没错,我们是按着字典的key-value形式传的,这时执行的就是jsonStr['sign']='sign'

这种方法的好处就是以后在拼接报文的时候只要按着这种格式传参,就直接拼好了一个json。但是这种方法也有它的不足,就是如果传10个参数还无所谓,如果传100个参数……没错,只能写100个这个东西^_^而且只能是一层的json像是下图这种,如果在字典里还要嵌套字典或者列表,这种方法也是不可用的。但是优化也很方便,就是可以先读一个含有发送报文的文本。

运行得到:

现在我们就完成了拼接发送报文的工作。

微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

Robot Framework接口测试(1)的更多相关文章

  1. robot framework 接口测试 http协议post请求json格式

    robot framework 接口测试 http协议post请求json格式 讲解一个基础版本.注意区分url地址和uri地址. rf和jmeter在添加服务器地址也就是ip地址的时候,只能url地 ...

  2. Robot Framework接口测试(4)

    现在我们已经做好了进行接口测试的必要准备:1.拼接发送的报文:2.发送报文的方法.现在我们实现RF上的接口测试. 我们先对发送的方法进行一下封装: 1.拼接报文方法: #coding : utf-8 ...

  3. Robot Framework接口测试(3)--http请求之post

    http请求更多的是post请求,我们可以:查看说明:很多网站在登录的时候需要加上头部信息即headers,这个信息可以通过抓包工具获得——fiddler,一个轻量级的抓包工具,大神用了都说好~这里模 ...

  4. Robot Framework接口测试(2)--http请求之get

    本来打算把http发送请求的get和post方法都介绍一下的,结果发现篇幅有点长,文本编辑也变得混乱,所以这里先介绍一下get方法,下一次再post.其实这些方法大家可以看一下源码里面的介绍只需要在代 ...

  5. robot framework接口测试之一-完整的测试用例

    *** Settings *** Library Collections Library json Library requests Library RequestsLibrary Library H ...

  6. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

  7. 【Robot Framework 项目实战 01】使用 RequestsLibrary 进行接口测试

    写在前面 本文我们一起来学习如何使用Robot Framework 的RequestsLibrary库,涉及POST.GET接口测试,RF用例分层封装设计等内容. 接口 接口测试是我们最常见的测试类型 ...

  8. 基于RFS(robot framework selenium)框架模拟POST/GET请求执行自动化接口测试

    打开RIDE添加测试用例 如: Settings         Library Collections       Library RequestsLibrary       Test Cases ...

  9. 在centos7中安装Robot Framework

    安装前景介绍: 最初,我们是在Windows环境下搭建Robot Framework来对我们的服务进行接口测试的(想知道如何在Windows下安装Robot Framework,可以参考我同事的博客h ...

随机推荐

  1. ubuntu开启ROOT用户自动登录教程

    ub默认不开root很纠结,虽说是为了安全,但对于linux老鸟,老是sudo烦的很 开root方法: sudo passwd root 输入root密码 sudo gedit /etc/gdm/cu ...

  2. ICMP与PING解析

    1.ICMP格式 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消 ...

  3. 【c++习题】【17/4/16】动态分配内存

    #include<iostream> #include<cstring> #define N 100 using namespace std; class String{ pu ...

  4. Oracle 事务处理

    事务的四大特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 2.一致性(Consistency) 一致性是指数据库在事务操作前和事 ...

  5. eclipse——反编译插件

    百度云链接 链接:https://pan.baidu.com/s/1iEtstiK5mJ4kDp6gTfVBww 密码:8wf7 在线安装地址 http://jd.benow.ca/jd-eclips ...

  6. XML基本知识点——思维导图

    如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/5dcd3224563939 有道云笔记图片链接 http://note.youdao.com/ ...

  7. StrStr,判断一个字符串是不是另一个字符串的字串,并返回子串的位置

    public int strStr(String haystack, String needle) { if(haystack == null || needle == null) { return ...

  8. Pandas基本功能

    到目前为止,我们了解了三种Pandas数据结构以及如何创建它们.接下来将主要关注数据帧(DataFrame)对象,因为它在实时数据处理中非常重要,并且还讨论其他数据结构. 系列基本功能 编号 属性或方 ...

  9. 在mybatis中使用存储过程报错java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: PLS-00905: 对象 USER1.HELLO_TEST 无效 ORA-06550: 第 1 行, 第 7 列:

    hello_test是我的存储过程的名字,在mapper.xml文件中是这么写的 <select id="getPageByProcedure" statementType= ...

  10. mysql应该看的blog

    一个比较系统的学习mysql的网站:http://www.runoob.com/mysql/mysql-data-types.html