我們一般接口測試測的無非這幾種:
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 ()
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");
(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了。