接口测试构造数据的几种方法总结

我们一般接口测试测的无非这几种:

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了。
原文地址:https://www.cnblogs.com/weiweiyao/p/4600402.html