使用Moco框架的Mock测试

Moco框架:github上面一个开源的项目,可以模拟http、https等协议。
github网址 :moco源码

1.启动模拟服务器

下载moco_jar包的网址:moco-jar包下载
启动模拟服务器的命令:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 8899 -c startup1.json

jar包:moco-runner-0.11.0-standalone.jar 和 json文件:startup1.json在同一个路径下,故采用当前路径 ./moco-runner-0.11.0-standalone.jar

http:表示使用http协议
8899:端口号

[
  {
    "description": "这是我们的第一个moco例子",
    "request": {
      "uri": "/demo"
    },
    "response": {
      "text": "第一个moco框架demo"
    }
  }

2.带参数的get方法的实现

服务的热部署:当修json配置文件时,服务自动重启更新,不影响用户的使用。

输入网址:http://localhost:8899/getWithParam?name=huhansan&age=18 来访问带参数的get请求。
带参数&不带参数的get请求的json文件配置:
参数:“queries”

[
  {
    "description": "模拟一个没有参数的get请求",
    "request": {
      "uri": "/getdemo",
      "method": "get"
    },
    "response": {
      "text": "这是一个没有参数的get请求"
    }
  },
  {
    "description": "模拟一个带参数的get请求",
    "request": {
      "uri": "/getWithParam",
      "method": "get",
      "queries": {
        "name": "huhansan",
        "age": "18"
      }
    },
    "response": {
      "text": "我胡汉三又回来了!!!"
    }
  }
]

3.Moco框架中http协议的post方法的实现

浏览器只能使用Get的方式去访问服务。
如果需要使用Post的方法去访问服务,则可使用JMeter去使用Post的方式去访问。

不带参数&带参数的Post请求的json配置文件:
参数:“forms”

[
  {
    "description": "模拟一个不带参数post请求",
    "request": {
      "uri": "/postDemo",
      "method": "post"
    },
    "response": {
      "text": "这是我的第一个mock的post请求"
    }
  },
  {
    "description": "这是一个带参数的post请求",
    "request": {
      "uri": "postWithParam",
      "method": "post",
      "forms": {
        "name": "huhansan",
        "sex": "male"
      }
    },
    "response": {
      "text": "我胡汉三带着参数回来了!!!"
    }
  }
]

4.在Moco框架中加入Cookies

Cooki的填写:名称、值、域(服务器地址)、路径。
可使用JMeter来添加Cookie参数。
Post请求中配置json数据,在request和response中都可以配置,json请求数据写入到请求的BodyDate中。
带Cookies参数的get和post请求的json配置:

[
  {
    "description": "这是一个带cookie信息的get请求",
    "request": {
      "uri": "get/with/cookies",
      "method": "get",
      "cookies": {
        "login": "true"
      }
    },
    "response": {
      "text": "这是一个需要携带cookies信息才能访问的get请求"
    }
  },
  {
    "description": "这是一个带cookies信息的post请求",
    "request": {
      "uri": "/post/with/cookies",
      "method": "post",
      "cookies": {
        "login": "true"
      },
      "json": {
        "name": "huhansan",
        "age": "18"
      }
    },
    "response": {
      "status": 200,
      "json": {
        "huhansan":"success",
        "status": "1"
      }
    }
  }
]

5.在Moco框架中加入Headers信息(request中)

headers信息:一般是对数据格式的要求。
header信息
的json配置文件,json数据

[
  {
    "description": "这是一个带header信息的post请求",
    "request": {
      "uri": "post/with/headers",
      "method": "post",
      "headers": {
        "conten-type": "application/json"
      },
      "json": {
        "name": "wanglaosi",
        "sex": "female"
      }
    },
    "response": {
      "json": {
        "wanglaosi": "success",
        "status": "1"
      }
    }
  }
]

6.Mock框架进行重定向

“redirectTo”:重定向到别的网页

[
  {
    "description": "重定向到百度",
    "request": {
      "uri": "/redirect"
    },
    "redirectTo": "http://www.baidu.com"
  },

  {
    "description": "重定向到一个自己的网页上",
    "request": {
      "uri": "redirect/topath"
    },
    "redirectTo": "redirect/new"
  },

  {
    "description": "这是被重定向到的请求",
    "request": {
      "uri": "redirect/new"
    },
    "response": {
      "text": "重定向成功了!!!"
    }
  }
]

你可能感兴趣的:(软件测试)