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

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。接口测试构造数据的几种方法总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

  • (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了。

参考博客: https://www.cnblogs.com/weiweiyao/p/4600402.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/162862.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!