FrostySun

Java自动化测试三(moco框架使用)

moco框架

moco框架介绍

​ mock用来模拟接口的,本次学习mock用的是moco框架,moco框架是github上的一个开源项目,可以模拟一些http,https,Socket协议

  • moco下载地址:moco下载地址

    • 我们选择moco-runner/选择版本号-->0.12.0/选择moco的jar文件(一般是最大的那个)-->moco-runner-0.12.0-standalone.jar

    1559570580355.png

    • Maven框架的依赖地址:

      <!-- https://mvnrepository.com/artifact/com.github.dreamhead/moco-runner -->
      <dependency>
          <groupId>com.github.dreamhead</groupId>
          <artifactId>moco-runner</artifactId>
          <version>0.12.0</version>
      </dependency>

我们的第一个Demo

  1. 我们先随便创建一个文件夹,目前用不用idea都可以
  2. 把我们刚才下载的Demo创建到目录下
  3. 创建我们的启动配置文件json
  4. 打开我们的命令行操作界面,然后进入我们的文件根目录下,执行命令:java -jar moco-runner-0.12.0-standalone.jar http -p 8888 -c 配置的json文件

    • 命令详解:

      • java -jar是启动jar文件的标准启动命令,如果失败,可能是电脑的jdk环境变量问题,请自行百度进行检查是否正确
      • 参数:http表示我们请求的方式
      • 参数:-p 8888 是指我们的启动端口参数,后面紧跟要启动的端口号
      • 参数:-c json配置文件 此参数主要指定我们的配置文件,可以使用绝对路径或者强制路径去指定我们的额moco的配置文件的位置
  5. 配置我们的json文件,如果复制过去,一定要删除注释

    [
      {
        "description": "这个是我们第一个的mock例子",
        "request": {
          "uri": "/demo"
        },
        "response": {
          "text": "I name is mock",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      }
    ]
  6. 在浏览器输入:http://localhost:8888/demo或者http://127.0.0.1:8888/demo

Moco框架的http协议的get方法的Mock实现

  • 照例我们呢还是创建一个json文件

    [
      {
        "description": "这个是我们第一个没有参数get请求",
        "request": {
          "uri": "/getDemo",
          "method": "get"
        },
        "response": {
          "text": "这是我们第一个没有参数的get请求",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      },
      {
        "description": "模拟一个带参数的get请求",
        "request": {
          "uri": "/getWithParam",
          "method": "get",
          "queries": {
            "name": "胡汉三",
            "age": "18"
          }
        },
        "response": {
          "text": "我胡汉三又回来了!!!",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      }
    ]
  • 然后启动我们的moco
  • 访问对应的路径返回我们的参数

1559574249968.png

Moco框架的http协议的post方法的Mock实现

  • 这次我们依然是创建一个json文件

    • 这里有一个问题一定要注意!注意!!注意!!!
    • 那就是我们post请求的参数一定不能使用get带参请求的queries去请求,否则会报400参数不合法
    • 我们可以先使用forms去请求,也就是我们的基本的form表单数据类型
    [
      {
        "description": "模拟一个post请求",
        "request": {
          "uri": "/postDemo",
          "method": "post"
        },
        "response": {
          "text": "这个是我们第一个mock的post请求",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
    
      },
      {
        "description": "这个是我们一个带参数的post请求",
        "request": {
          "uri": "/postWithParam",
          "method": "post",
          "forms": {
            "name": "胡汉三",
            "age": "18",
            "sex": "man"
          }
        },
        "response": {
          "text": "我胡汉三带着参数来了!!!",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      }
    ]
  • 然后换文件启动moco
  • 然后我们要换工具请求了,浏览器已经满足不了我们了,我们使用Postman

!1559575854461.png

我们如何在Moco框架中增加Cookies

在Moco框架中携带Cookies发送get请求
  • 增加json文件

    [
      {
        "description": "这是一个带cookies信息的get请求",
        "request": {
          "uri": "/getDemo/Cookies",
          "method": "get",
          "cookies": {
            "login": "true"
          }
        },
        "response": {
          "text": "这个是一个必须带cookies信息才可以访问的get请求",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      }
    ]
  • 使用Postman发送请求并添加cookies信息

1559577180137.png

在Moco框架中携带Cookies发送post请求
  • 添加一个json文件

    [
      {
        "description": "这是一个带cookies信息的get请求",
        "request": {
          "uri": "/getDemo/Cookies",
          "method": "get",
          "cookies": {
            "login": "true"
          }
        },
        "response": {
          "text": "这个是一个必须带cookies信息才可以访问的get请求",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      },
      {
        "description": "这是一个带cookies信息的post请求",
        "request": {
          "uri": "/postDemo/Cookies",
          "method": "post",
          "cookies": {
            "login": "true"
          },
          "json": {
            "name": "胡汉三",
            "sex": "man"
          }
        },
        "response": {
          "status": 200,
          "json": {
            "code": "success",
            "msg": "胡汉三,请求成功了"
          }
        }
      }
    ]
  • 使用Postman发送请求,并添加cookies信息,添加json数据
  • 此时我们一定要注意,我们的请求中有中文,一定要设置编码,编码格式要和我们的json文件的格式保持一致
  • 由此可以得出结论,我们的请求格式归根结底第受限于我们json文件的编码格式
  • 我们可以在Postman中的henders中对Content-Type的值设置为:application/json;charset=utf8

!1559579024157.png

带有Header信息的请求

  • 创建json文件

    [
      {
        "description": "这个是一个带header信息的post请求",
        "request": {
          "uri": "/postHeader",
          "method": "post",
          "headers": {
            "content-type": "application/json;charset=utf8"
          },
          "json": {
            "name": "李四",
            "sex": "女"
          }
        },
        "response": {
          "json": {
            "code": "success",
            "msg": "李四,请求成功了"
          }
        }
      }
    ]
  • 使用postman发送请求

1559615433778.png

1559615448516.png

实现请求重定向

Demo01
  • 创建json文件,我们重定向到百度

    [
      {
        "description": "这个是一个重定向到百度的demo",
        "request": {
          "uri": "/redirect"
        },
        "redirectTo": "http://www.baidu.com"
      }
    ]
  • 使用浏览器进行验证

1559615979060.png

Demo2
  • 创建json文件

    [
      {
        "description": "重定向到自己的一个网页",
        "request": {
          "uri": "/redirect/toPath"
        },
        "redirectTo": "/redirect/new"
      },
      {
        "description": "这个是被上面重定向的请求",
        "request": {
          "uri": "/redirect/new"
        },
        "response": {
          "text": "重定向成功了",
          "headers": {
            "Content-Type": "text/html;charset=gbk"
          }
        }
      }
    ]
  • 使用浏览器访问

1559616503095.png

  • 使用postman访问

1559616495470.png

仅有一条评论

  1. 123456 · 10月

    @ 哈哈哈