zoukankan      html  css  js  c++  java
  • 接口测试构造数据的几种方法总结

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

    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了。
  • 相关阅读:
    python 之 数据库(创建表的完整语法、基本数据类型)
    python 之 数据库(数据库安装方法、基本sql语句、存储引擎)
    python 之 并发编程(非阻塞IO模型、I/O多路复用、socketserver的使用)
    python 之 并发编程(线程Event、协程)
    python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)
    python 之 并发编程(守护线程与守护进程的区别、线程互斥锁、死锁现象与递归锁、信号量、GIL全局解释器锁)
    python 之 并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)
    python 之 并发编程(生产者消费者模型、守护进程的应用)
    SAP T CODE : Description (Program)
    SAP SD 信用检查相关
  • 原文地址:https://www.cnblogs.com/weiweiyao/p/4600402.html
Copyright © 2011-2022 走看看