我们一般接口测试测的无非这几种:
1.把数据post给某个接口,看接口返回情况。
2.访问某个接口,接口携带的参数不一样,测试其返回情况
3.直接访问某个接口(不需要你修改携带参数),查看该接口返回的内容。这个一般是查看接口返回的数据对不对,一般用于两个系统之间互相传递数据。
对于第2中情况,往往不需要我们构造数据,直接给url携带不同的参数即可。
但是对于1,3中情况,需要我们自己构造数据。
总结一下这2种情况构造数据的方法(记性不太好,原谅我什么都要记录一下,哪怕是一个很简单的方法)。
情况1:
a.用firefox的restclient插件.用这个插件给某个url post数据,如下图所示:
b.也可以自己写脚本,将post的数据放在文件里,脚本调用这个文件,将数据post给某个接口
如:
##coding=utf-8
import urllib
POST_URL="http://123.23.223.34:8888/path1"
PATH="1001.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 ()
运行这个payhon脚本,就可以把1001.txt文件里的数据通过post方法传递给接口http://123.23.223.34:8888/path1
情况3:
比如说我需要测个定时任务,这个定时任务是:定时访问其他项目组的某个接口,拉取数据到我们组。为了避免被别人牵着鼻子走(比如说他们组没完成或接口超时,导致我们的测试延期),可以自己模拟一个接口,供我们的系统调用,这样的话,我们想啥时候测就啥时候测,想给接口传输啥数据就传输啥数据。
具体做法是这样:
1.根据双方组定义的要传输的数据格式,自己造好数据,存在本地文件中(如1.json)
2.自己模拟一个服务,让这个服务调用我的本地文件1.json。
如在虚拟机11.22.33.44上写个脚本index.js,脚本内容如下:
// Generated by CoffeeScript 1.6.3
(function() {
var data1, data2, http, url;
http = require("http");
url = require("url");
data1 = require("./1.json");
data2 = require("./2.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 === "/path") {
filename = "./1.json";
}else if (path === "/path2"){
filename = "./2.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(8886);
}).call(this);
脚本的意思是当你访问http://11.22.33.44:8886/path这个链接时,返回的数据是1.json里面的数据;
当你访问http://11.22.33.44:8886/path2这个链接时,返回的数据时2.json文件里面的数据
3.找到我们系统调用接口的配置文件,把调用的其他组的那个接口改成我自己写的接口地址,如http://11.22.33.44:8886/path。
4.开启自己造的这个服务,这样接口才可以用哦。nohup node index.js &
5.大功告成,这样系统调用的就是我们自己定义的接口和数据了,而不是调用的其他组的接口。这样是不是很方便。等其他项目组接口都完成测试后后,双方组再联调一下就ok了。