一般的接口测试测的无非这几种:
- (1). 把数据POST给某个接口,看接口返回情况。
- (2). 访问某个接口,接口携带的参数不一样,测试其返回情况
- (3). 直接访问某个接口(不需要你修改携带参数),查看该接口返回的内容。这个一般是查看接口返回的数据对不对,一般用于两个系统之间互相传递数据。
对于第2种情况,往往不需要我们构造数据,直接给url携带不同的参数即可。但是对于1,3中情况,需要我们自己构造数据。总结一下这2种情况构造数据的方法。
情况1:
(1). 用firefox的restclient插件,用这个插件给某个url post数据,如下图所示:
(2). 也可以自己写脚本,将post的数据放在文件里,脚本调用这个文件,将数据post给某个接口
如:
##coding=utf-8
import urllib
POST_URL = "http://xxx.xxx.xxx.xxx:8888/path"
PATH = "test_data.txt"
def get_json_from_disk (path):
"""get json from local path
Args:
path: local disk path
Returns:
string
"""
fp = open (path, "r")
d = fp.read()
fp.close()
return d
def _do_post ():
"""post atlas data to hermes
"""
path = PATH
data = get_json_from_disk (path)
params_src = {"data": data}
params = urllib.urlencode(params_src)
f = urllib.urlopen( POST_URL , params)
print f.read()
f.close()
return True
_do_post ()
运行这个python脚本,就可以把 test_data.txt 文件里的数据通过post方法传递给接口http://xxx.xxx.xxx.xxx:8888/path
情况3:
比如说我需要测个定时任务,这个定时任务是:定时访问其他项目组的某个接口,拉取数据到我们组。为了避免被别人牵着鼻子走(比如说他们组没完成或接口超时,导致我们的测试延期),可以自己模拟一个接口,供我们的系统调用,这样的话,我们想啥时候测就啥时候测,想给接口传输啥数据就传输啥数据。
具体做法是这样:
(1). 根据双方组定义的要传输的数据格式,自己造好数据,存在本地文件中(如1.json)
(2). 自己模拟一个服务,让这个服务调用我的本地文件1.json。
如在虚拟机 xxx.xxx.xxx.xxx 上写个脚本index.js,脚本内容如下:
(function() {
var data1, data2, http, url;
http = require("http");
url = require("url");
data1 = require("./data1.json");
data2 = require("./data2.json");
http.createServer(function(req, res) {
var data, filename, path;
console.log(new Date().toString(), req.url);
path = url.parse(req.url).pathname;
if (path === "/path1") {
filename = "./data1.json";
}else if (path === "/path2"){
filename = "./data2.json";
}else {
res.end("path not found");
return;
}
delete require.cache[require.resolve(filename)];
data = require(filename);
return res.end(JSON.stringify(data, null, 2));
}).listen(8888);
}).call(this);
脚本的意思是当访问 http://xxx.xxx.xxx.xxx:8888/path1 这个链接时,返回的数据是 data1.json 文件里面的数据;当访问http://xxx.xxx.xxx.xxx:8888/path2 这个链接时,返回的数据时 data2.json 文件里面的数据。
(3). 找到我们系统调用接口的配置文件,把调用的其他组的那个接口改成我自己写的接口地址,如 http://xxx.xxx.xxx.xxx:8888/path1
(4). 开启自己造的这个服务,这样接口才可以用。nohup node index.js &
大功告成,这样系统调用的就是我们自己定义的接口和数据了,而不是调用的其他组的接口。这样很方便。等其他项目组接口都完成测试后后,双方组再联调一下就ok了。