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像是下图这种,如果在字典里还要嵌套字典或者列表,这种方法也是不可用的。但是优化也很方便,就是可以先读一个含有发送报文的文本。
运行得到:
现在我们就完成了拼接发送报文的工作。
微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~