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

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

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

时间: 2024-08-27 23:15:18

接口测试构造数据的几种方法总结的相关文章

Java构造和解析Json数据的两种方法详解一

原文链接:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多Java下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSO

【转】Java构造和解析Json数据的两种方法详解一

Java构造和解析Json数据的两种方法详解一 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和J

Java构造和解析Json数据的两种方法详解一——json-lib

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSON-

Java构造和解析Json数据的两种方法详解二——org.json

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例.       用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一 一.介

SQL Server 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes

Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法

OnceIO 是 OnceDoc 企业私有内容(文档)管理系统的底层Web框架,它可以实现模板文件.静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只压缩一次),拥有非常好的性能,为您节约服务器成本.它的模块化功能,可以让你的Web进行分布式存储,在一个扩展包里即可包含前端.后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展.目前 OnceIO 已经开源,本文主要介绍node.js语言中的表单提交及OnceIO中接受GET

5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model)) 在View页面中可以指定页面从属于哪个模型 注:以上的关系可以通过MVC的强类型视图开发来解决我们的开发代码的智能感知 1.强类型视图开发的步骤 1)在页面中指定强类型的类型(一定是引用类型),代码:例: @model List<MyMVCBookShop.Models.Book> 2)从控制器传强类型的数据到View视图里,那么就必须保证传入的数据一定和强类型视图中定义的类型相一致,例:

MySQL中删除数据的两种方法

转自:http://blog.csdn.net/apache6/article/details/2778878 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句. DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活. 如果要清空表中的所有记录,可以使用下面的两种方法: DELETE FROM table1 TRUNCATE TABLE table1 其

DataGridView显示数据的两种方法

1.简单介绍 DataGridView空间是我们常用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们常用的有两种方法,一种是直接设置DataSoure属性就可以绑定数据.此方法不需要写任何代码操作比较简单,但是它显示出来的是整张表的数据.如果整一表数据比较多,而且我们并不需要所有的数据的情况下,我们就应该考虑第二种方法了.通过写代码连接数据库并从数据库中读取数据,最后将返回的数据传给DataGridView.这种方法貌似比较复杂,但是它只显