mock test (baffle test)

https://www.cnblogs.com/lc-blogs/p/17027617.html

Mock test (baffle test) is a test method that uses a virtual object to create a test method for some objects that are not easy to construct or obtain during the test process.
For example: to test the weather interface, there has been no snow in Shanghai recently, so how can I simulate the scene of snow? Do I need to wait until the day when it really snows? At this time, we can use mock to help us complete the snowing scene

  1. The back-end code has not been developed yet, and the front-end code needs to call the back-end interface for debugging, what should I do?
  2. Unable to control the return of a certain interface of the third-party system, the returned data does not meet the requirements?
  3. How to test early if joint debugging with a third party is required but the development of the other party has not been completed?
  4. There is no need to wait for the developer to finish developing the interface before writing the automated test case. During this process, the case can be modified and supplemented. After the back-end development interface is completed, only the test case needs to be executed, which saves a lot of work, and these Perfect use case scripts are executed with automation, and the effect is better.

AutoResponder of fiddler

AutoResponder Reference: Use of AutoResponder

Postman's Mock Server

Mock Server Reference: Use of Mock Server

moco-runner

Moco is a framework (tool) for simply building a simulated server, which can simulate protocols such as http, https, socket, etc. Based on Java open source (requires java environment).
Preparation tool: jdk environment: jdk installation and configuration

http protocol

1. Download

Download address: Central Repository: com/github/dreamhead/moco-runner
GitHub: GitHub - dreamhead/moco: Easy Setup Stub Server

Start command:
java -jar moco jar file protocol type -p port number -c json configuration file

<span style="background-color:#282c34"><span style="color:#abb2bf">java -jar moco-runner-<span style="color:#d19a66">1.3</span>.<span style="color:#d19a66">0</span>-standalone.jar http -p <span style="color:#d19a66">9090</span> -c result.json

<span style="color:#98c379">//</span>jar包的名称根据自己下载的jar包版本来写;
<span style="color:#98c379">//</span>http 代表这个模拟的是http请求;
<span style="color:#98c379">//</span>-p <span style="color:#d19a66">9090</span> 是定义端口号;
<span style="color:#98c379">//</span>-c result.json 是编辑请求与响应的json文件名;</span></span>

2. use

  • Create a new folder, for example: mock
  • Put the downloaded moco-runner-1.3.0-standalone.jar into the mock folder

3. Simulate the get interface response (without parameters)

1) Create a new json file (for example: result.json) and put it in the mock folder. The json file is used to store the interface mock response data

2) Open the result.json file, simulate the get request without parameters, edit as follows:

<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"首页(不带参数)"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/index"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"get"</span>
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"text"</span>: <span style="color:#98c379">"进入首页成功!"</span>
		}
	}
]

<span style="color:#b18eb1"><em>//description:接口描述信息</em></span>
<span style="color:#b18eb1"><em>//request:所有请求的数据</em></span>
<span style="color:#b18eb1"><em>//uri:请求路径</em></span>
<span style="color:#b18eb1"><em>//method:HTTP请求类型GET|POST|PUT|DELETE</em></span>
<span style="color:#b18eb1"><em>//response:所有的响应数据</em></span>
<span style="color:#b18eb1"><em>//text:响应的文本</em></span></span></span>

3) start

  • Launch a cmd window in the created mockrunner folder

  • Enter the command in the cmd window: java -jar moco-runner-1.3.0-standalone.jar http -p 9090 -c result.json
<span style="background-color:#282c34"><span style="color:#abb2bf">java -jar moco-runner-<span style="color:#d19a66">1.3</span>.<span style="color:#d19a66">0</span>-standalone.jar http -p <span style="color:#d19a66">9090</span> -c result.json

<span style="color:#98c379">//</span>jar包的名称根据自己下载的jar包版本来写;
<span style="color:#98c379">//</span>http 代表这个模拟的是http请求;
<span style="color:#98c379">//</span>-p <span style="color:#d19a66">9090</span> 是定义端口号;
<span style="color:#98c379">//</span>-c result.json 是编辑请求与响应的json文件名;</span></span>

The following figure shows that the startup is successful:

  • Stop the mock service, use Ctrl+c, or close the cmd window

  • After starting the service, visit in the browser: 127.0.0.1:9090/index

postmanq send request example

4. Simulate get interface response (with parameters)

  • Edit the mock.json file to simulate the get request with parameters, edit as follows:
<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"个人主页"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/userhomepage"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"get"</span>,
			<span style="color:#d19a66">"queries"</span>: {
				<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3882"</span>,
				<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"code"</span>: <span style="color:#98c379">"10000"</span>,
				<span style="color:#d19a66">"message"</span>: <span style="color:#98c379">"进入个人主页成功"</span>,
				<span style="color:#d19a66">"data"</span>: {
					<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>,
					<span style="color:#d19a66">"age"</span>: <span style="color:#98c379">"19"</span>,
					<span style="color:#d19a66">"addr"</span>: <span style="color:#98c379">"beijing"</span>,
					<span style="color:#d19a66">"tel"</span>: <span style="color:#98c379">"15512348888"</span>,
					<span style="color:#d19a66">"lastlogin"</span>: <span style="color:#98c379">"2020-10-01 10:55:23"</span>
				}
			}
		}
	}
 ]

<span style="color:#b18eb1"><em>//headers设置response的返回数据为application/json</em></span>
<span style="color:#b18eb1"><em>//request中的queries:定义get请求参</em></span></span></span>

postman send request example

5. Simulate post request

  • 1) Pass the parameter  Content-Type: application/json  in JSON format, the passed parameters are in JSON format, and the parameters are contained in a pair of curly braces in the form of key-value pairs.
    Edit the mock.json file to simulate the post request, edit as follows:
<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"登录,请求Content-Type:application/json"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/login"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"username"</span>: <span style="color:#98c379">"admin"</span>,
				<span style="color:#d19a66">"password"</span>: <span style="color:#98c379">"123456"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"code"</span>: <span style="color:#98c379">"10000"</span>,
				<span style="color:#d19a66">"message"</span>: <span style="color:#98c379">"登录成功"</span>,
				<span style="color:#d19a66">"data"</span>: {
					<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3882"</span>,
					<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>,
					<span style="color:#d19a66">"addr"</span>: <span style="color:#98c379">"chengdu"</span>,
					<span style="color:#d19a66">"tel"</span>: <span style="color:#98c379">"13355556666"</span>,
					<span style="color:#d19a66">"token"</span>: <span style="color:#98c379">"mocktoken9gd878ad"</span>
				}
			}
		}
	}
]

<span style="color:#b18eb1"><em>//headers中的"Content-Type": "application/json"指传递参数以json方式</em></span>
<span style="color:#b18eb1"><em>//headers中的"token": "mocktoken"指请求头中必须加上token才能访问</em></span>
<span style="color:#b18eb1"><em>//status:定义http响应状态码</em></span></span></span>

postman send request example

  • 2) Pass parameter  Content-Type: multipart/form-data  is in form-data format. Parameters are written in the body to correspond to the parameter name and value. It is often used to pass parameters and files. There is a boundary field in the Content-Type field of the request , when passing parameters, each parameter is contained by a pair of boundaries.
    Edit the mock.json file to simulate the post request, edit as follows:
<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"商品详情页,请求Content-Type:multipart/form-data"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/details"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"forms"</span>: {
				<span style="color:#d19a66">"goodid"</span>: <span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"20220101"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"goodid"</span>: <span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"name"</span>:<span style="color:#98c379">"pears"</span>,
				<span style="color:#d19a66">"status"</span>:<span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"stock"</span>:<span style="color:#98c379">"25"</span>,
				<span style="color:#d19a66">"vip_amount "</span>:<span style="color:#98c379">"24"</span>,
				<span style="color:#d19a66">"sale_amount"</span>:<span style="color:#98c379">"18"</span>,
				<span style="color:#d19a66">"market_amount"</span>:<span style="color:#98c379">"23.6"</span>,
				<span style="color:#d19a66">"attribute_value"</span>:<span style="color:#98c379">"丰富营养"</span>,
				<span style="color:#d19a66">"product_attr_vals"</span>:<span style="color:#98c379">"单果300g"</span>,
				<span style="color:#d19a66">"share_title"</span>:<span style="color:#98c379">"分享标题"</span>,
				<span style="color:#d19a66">"share_descrip"</span>:<span style="color:#98c379">"分享描述"</span>,
				<span style="color:#d19a66">"license"</span>:<span style="color:#98c379">"营业执照"</span>,
				<span style="color:#d19a66">"employType"</span>:<span style="color:#d19a66">0</span>
			}
		}
	}
]</span></span>

postman send request example

  • 3) Pass parameters  Content-Type: application/x-www-form-urlencoded  format, the same way as get request to pass parameters, the difference is that get request parameters are concatenated in url, and post request parameters are in body.
    Edit the mock.json file to simulate the post request, edit as follows:
<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"订单详情页,请求Content-Type:application/x-www-form-urlencoded"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/order"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/x-www-form-urlencoded"</span>
			},
			<span style="color:#d19a66">"forms"</span>: {
				<span style="color:#d19a66">"ordernum"</span>: <span style="color:#98c379">"20201010"</span>,
				<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3218"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"orderNo"</span>: <span style="color:#98c379">"LO20111216292785711001"</span>,
				<span style="color:#d19a66">"productId"</span>:<span style="color:#d19a66">2</span>,
				<span style="color:#d19a66">"skuId"</span>:<span style="color:#d19a66">22</span>,
				<span style="color:#d19a66">"expert"</span>:<span style="color:#d19a66">0</span>,
				<span style="color:#d19a66">"count"</span>:<span style="color:#d19a66">1</span>,
				<span style="color:#d19a66">"payType"</span>:<span style="color:#98c379">"WECHAT_PAY"</span>,
				<span style="color:#d19a66">"payClient"</span>:<span style="color:#98c379">"MINI"</span>,
				<span style="color:#d19a66">"mobile"</span>:<span style="color:#98c379">"15812345678"</span>,
				<span style="color:#d19a66">"goodname"</span>:<span style="color:#98c379">"apple"</span>,
				<span style="color:#d19a66">"orderType"</span>:<span style="color:#98c379">"NORMAL"</span>,
				<span style="color:#d19a66">"logistics"</span>:<span style="color:#98c379">"NONE"</span>
			}
		}
	}
]</span></span>

postman send request example

Detailed mock file parameters

description: request description (the program will not recognize it)

request: request content

  • uri: the requested url resource path
  • method: request type, which supports HTTP protocol-related request types, such as post/get/put/delete, etc.
  • headers: the request header of the request
  • token: the token that the interface request must carry in the headers
  • cookies: interface to verify cookie information
  • queries: the request parameters of the get request
  • forms: form request body of post
  • json: request request json data, of course, it can also be a local json file (data separation can be realized)

response: response content

  • status: defines the http response status code
  • headers: the response header of the response
  • json: the response json data of response, of course, it can also be a local json file (data separation can be realized)
  • text: text response body
  • redirectTo: redirect when requested

Note: The mocks of multiple requests can be written into one file, and each mock is separated by a comma in English. The following are the interfaces of different request methods

<span style="background-color:#282c34"><span style="color:#abb2bf">[
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"首页"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/index"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"get"</span>
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"text"</span>: <span style="color:#98c379">"Welcome to the the home page..."</span>
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"个人主页"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/userhomepage"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"get"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"token"</span>: <span style="color:#98c379">"mocktoken9gd878ad"</span>
			},
			<span style="color:#d19a66">"queries"</span>: {
				<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3882"</span>,
				<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"code"</span>: <span style="color:#98c379">"10000"</span>,
				<span style="color:#d19a66">"message"</span>: <span style="color:#98c379">"进入个人主页成功"</span>,
				<span style="color:#d19a66">"data"</span>: {
					<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>,
					<span style="color:#d19a66">"age"</span>: <span style="color:#98c379">"19"</span>,
					<span style="color:#d19a66">"addr"</span>: [<span style="color:#98c379">"beijing"</span>,<span style="color:#98c379">"shanghai"</span>,<span style="color:#98c379">"chengdu"</span>],
					<span style="color:#d19a66">"tel"</span>: <span style="color:#98c379">"15512348888"</span>,
					<span style="color:#d19a66">"lastlogin"</span>: <span style="color:#98c379">"2020-10-01 10:55:23"</span>
				}
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"登录,请求Content-Type:application/json"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/login"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"username"</span>: <span style="color:#98c379">"admin"</span>,
				<span style="color:#d19a66">"password"</span>: <span style="color:#98c379">"123456"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"code"</span>: <span style="color:#98c379">"10000"</span>,
				<span style="color:#d19a66">"message"</span>: <span style="color:#98c379">"登录成功"</span>,
				<span style="color:#d19a66">"data"</span>: {
					<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3882"</span>,
					<span style="color:#d19a66">"name"</span>: <span style="color:#98c379">"lucy"</span>,
					<span style="color:#d19a66">"addr"</span>: <span style="color:#98c379">"chengdu"</span>,
					<span style="color:#d19a66">"tel"</span>: <span style="color:#98c379">"13355556666"</span>,
					<span style="color:#d19a66">"token"</span>: <span style="color:#98c379">"mocktoken9gd878ad"</span>
				}
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"商品详情页,请求Content-Type:multipart/form-data"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/details"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"forms"</span>: {
				<span style="color:#d19a66">"goodid"</span>: <span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"20220101"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"goodid"</span>: <span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"name"</span>:<span style="color:#98c379">"pears"</span>,
				<span style="color:#d19a66">"status"</span>:<span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"stock"</span>:<span style="color:#98c379">"25"</span>,
				<span style="color:#d19a66">"vip_amount "</span>:<span style="color:#98c379">"24"</span>,
				<span style="color:#d19a66">"sale_amount"</span>:<span style="color:#98c379">"18"</span>,
				<span style="color:#d19a66">"market_amount"</span>:<span style="color:#98c379">"23.6"</span>,
				<span style="color:#d19a66">"attribute_value"</span>:<span style="color:#98c379">"丰富营养"</span>,
				<span style="color:#d19a66">"product_attr_vals"</span>:<span style="color:#98c379">"单果300g"</span>,
				<span style="color:#d19a66">"share_title"</span>:<span style="color:#98c379">"分享标题"</span>,
				<span style="color:#d19a66">"share_descrip"</span>:<span style="color:#98c379">"分享描述"</span>,
				<span style="color:#d19a66">"license"</span>:<span style="color:#98c379">"营业执照"</span>,
				<span style="color:#d19a66">"employType"</span>:<span style="color:#d19a66">0</span>
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"订单详情页,请求Content-Type:application/x-www-form-urlencoded"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/order"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/x-www-form-urlencoded"</span>,
				<span style="color:#d19a66">"token"</span>: <span style="color:#98c379">"mocktoken9gd878ad"</span>
			},
			<span style="color:#d19a66">"forms"</span>: {
				<span style="color:#d19a66">"ordernum"</span>: <span style="color:#98c379">"20201010"</span>,
				<span style="color:#d19a66">"userid"</span>: <span style="color:#98c379">"3218"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"orderNo"</span>: <span style="color:#98c379">"LO20111216292785711001"</span>,
				<span style="color:#d19a66">"productId"</span>:<span style="color:#d19a66">2</span>,
				<span style="color:#d19a66">"skuId"</span>:<span style="color:#d19a66">22</span>,
				<span style="color:#d19a66">"expert"</span>:<span style="color:#d19a66">0</span>,
				<span style="color:#d19a66">"count"</span>:<span style="color:#d19a66">1</span>,
				<span style="color:#d19a66">"payType"</span>:<span style="color:#98c379">"WECHAT_PAY"</span>,
				<span style="color:#d19a66">"payClient"</span>:<span style="color:#98c379">"MINI"</span>,
				<span style="color:#d19a66">"mobile"</span>:<span style="color:#98c379">"15812345678"</span>,
				<span style="color:#d19a66">"goodname"</span>:<span style="color:#98c379">"apple"</span>,
				<span style="color:#d19a66">"orderType"</span>:<span style="color:#98c379">"NORMAL"</span>,
				<span style="color:#d19a66">"logistics"</span>:<span style="color:#98c379">"NONE"</span>
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"物流详情,请求Content-Type:application/json,必须加上token才能访问"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/logistics"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json"</span>,
				<span style="color:#d19a66">"token"</span>: <span style="color:#98c379">"mocktoken9gd878ad"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"LogisticCode"</span>: <span style="color:#98c379">"118461988807"</span>,
				<span style="color:#d19a66">"ShipperCode"</span>: <span style="color:#98c379">"SF"</span>
			}
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"EBusinessID"</span>: <span style="color:#98c379">"1109259"</span>,
				<span style="color:#d19a66">"OrderCode"</span>: <span style="color:#98c379">"1"</span>,
				<span style="color:#d19a66">"ShipperCode"</span>: <span style="color:#98c379">"SF"</span>,
				<span style="color:#d19a66">"LogisticCode"</span>: <span style="color:#98c379">"118461988807"</span>,
				<span style="color:#d19a66">"Success"</span>: <span style="color:#56b6c2">true</span>,
				<span style="color:#d19a66">"CallBack"</span>:<span style="color:#98c379">""</span>,
				<span style="color:#d19a66">"State"</span>: <span style="color:#d19a66">3</span>,
				<span style="color:#d19a66">"Reason"</span>: <span style="color:#56b6c2">null</span>,
				<span style="color:#d19a66">"Traces"</span>: [
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/25 08:05:37"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"正在派件..(派件人邓裕富,电话:18718866310)[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"超时1小时"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/25 04:01:28"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"快件在深圳集散中心,准备送往下一站深圳[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"准时到达"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/25 01:41:06"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"快件在深圳集散中心[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"提前10分钟"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/24 20:18:58"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"已收件[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"准时到达"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/24 20:55:28"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"快件在深圳,准备送往下一站深圳集散中心[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"超时30分钟"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/25 10:23:03"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"派件已签收[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"超时17分钟"</span>
					},
					{
					<span style="color:#d19a66">"AcceptTime"</span>: <span style="color:#98c379">"2014/06/25 10:23:03"</span>,
					<span style="color:#d19a66">"AcceptStation"</span>: <span style="color:#98c379">"签收人是:已签收[深圳市]"</span>,
					<span style="color:#d19a66">"Remark"</span>: <span style="color:#98c379">"送货上门签收"</span>
					}
				]
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"上传json文件,仅能postman使用binary访问"</span>,
        <span style="color:#d19a66">"request"</span>: {
            <span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/file"</span>,
            <span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"post"</span>,
            <span style="color:#d19a66">"file"</span>: {
                <span style="color:#d19a66">"json"</span>: <span style="color:#98c379">"C:\\data.json"</span>
            }
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>: {
				<span style="color:#d19a66">"code"</span>:<span style="color:#98c379">"10000"</span>,
				<span style="color:#d19a66">"message"</span>:<span style="color:#98c379">"文件上传成功"</span>,
				<span style="color:#d19a66">"data"</span>:{
				}
			}
		}
	},
	{
		<span style="color:#d19a66">"description"</span>:<span style="color:#98c379">"重定向到百度"</span>,
		<span style="color:#d19a66">"request"</span>:{
		  <span style="color:#d19a66">"uri"</span>:<span style="color:#98c379">"/redirect"</span>,
		  <span style="color:#d19a66">"method"</span>:<span style="color:#98c379">"get"</span>
		},
		<span style="color:#d19a66">"redirectTo"</span>:<span style="color:#98c379">"http://www.baidu.com"</span>,
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">301</span>
		}
	},
	{
		<span style="color:#d19a66">"description"</span>: <span style="color:#98c379">"查询天气"</span>,
		<span style="color:#d19a66">"request"</span>: {
			<span style="color:#d19a66">"uri"</span>: <span style="color:#98c379">"/weatherquery"</span>,
			<span style="color:#d19a66">"method"</span>: <span style="color:#98c379">"get"</span>
		},
		<span style="color:#d19a66">"response"</span>: {
			<span style="color:#d19a66">"status"</span>: <span style="color:#d19a66">200</span>,
			<span style="color:#d19a66">"headers"</span>: {
				<span style="color:#d19a66">"Content-Type"</span>: <span style="color:#98c379">"application/json;charset=UTF-8"</span>
			},
			<span style="color:#d19a66">"json"</span>:{
				<span style="color:#d19a66">"reason"</span>: <span style="color:#98c379">"查询成功"</span>,
				<span style="color:#d19a66">"result"</span>:{
					<span style="color:#d19a66">"city"</span>:<span style="color:#98c379">"苏州"</span>,
					<span style="color:#d19a66">"realtime"</span>:{
						<span style="color:#d19a66">"temperature"</span>:<span style="color:#98c379">"4"</span>,
						<span style="color:#d19a66">"humidity"</span>:<span style="color:#98c379">"82"</span>,
						<span style="color:#d19a66">"info"</span>:<span style="color:#98c379">"阴天"</span>,
						<span style="color:#d19a66">"wid"</span>:<span style="color:#98c379">"02"</span>,
						<span style="color:#d19a66">"direct"</span>:<span style="color:#98c379">"西北方向"</span>,
						<span style="color:#d19a66">"power"</span>:<span style="color:#98c379">"3"</span>,
						<span style="color:#d19a66">"aqi"</span>:<span style="color:#98c379">"80"</span>
					},
					<span style="color:#d19a66">"future"</span>:[{
							<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"2019-02-22"</span>,
							<span style="color:#d19a66">"temperature"</span>:<span style="color:#98c379">"1/7摄氏"</span>,
							<span style="color:#d19a66">"weather"</span>:<span style="color:#98c379">"小雨转多yun"</span>,
							<span style="color:#d19a66">"wid"</span>:{
								<span style="color:#d19a66">"day"</span>:<span style="color:#98c379">"07"</span>,
								<span style="color:#d19a66">"night"</span>:<span style="color:#98c379">"12"</span>
							},
							<span style="color:#d19a66">"direct"</span>:<span style="color:#98c379">"北风转西北风"</span>
						},
						{
							<span style="color:#d19a66">"date"</span>:<span style="color:#98c379">"2019-02-23"</span>,
							<span style="color:#d19a66">"temperature"</span>:<span style="color:#98c379">"2/11摄氏"</span>,
							<span style="color:#d19a66">"weather"</span>:<span style="color:#98c379">"多云转阴"</span>,
							<span style="color:#d19a66">"wid"</span>:{
								<span style="color:#d19a66">"day"</span>:<span style="color:#98c379">"01"</span>,
								<span style="color:#d19a66">"night"</span>:<span style="color:#98c379">"02"</span>
							},
							<span style="color:#d19a66">"direct"</span>: <span style="color:#98c379">"北风转东北风"</span>
						},
						{
							<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"2019-02-24"</span>,
							<span style="color:#d19a66">"temperature"</span>: <span style="color:#98c379">"6/12摄氏"</span>,
							<span style="color:#d19a66">"weather"</span>: <span style="color:#98c379">"多云"</span>,
							<span style="color:#d19a66">"wid"</span>: {
								<span style="color:#d19a66">"day"</span>: <span style="color:#98c379">"01"</span>,
								<span style="color:#d19a66">"night"</span>: <span style="color:#98c379">"05"</span>
							},
							<span style="color:#d19a66">"direct"</span>: <span style="color:#98c379">"东北风转北风"</span>
						},
						{
							<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"2019-02-25"</span>,
							<span style="color:#d19a66">"temperature"</span>: <span style="color:#98c379">"5/12摄氏"</span>,
							<span style="color:#d19a66">"weather"</span>: <span style="color:#98c379">"小雨转晴"</span>,
							<span style="color:#d19a66">"wid"</span>: {
								<span style="color:#d19a66">"day"</span>: <span style="color:#98c379">"07"</span>,
								<span style="color:#d19a66">"night"</span>: <span style="color:#98c379">"09"</span>
							},
							<span style="color:#d19a66">"direct"</span>: <span style="color:#98c379">"东风转北风向"</span>
						},
						{
							<span style="color:#d19a66">"date"</span>: <span style="color:#98c379">"2019-02-26"</span>,
							<span style="color:#d19a66">"temperature"</span>: <span style="color:#98c379">"5/11摄氏"</span>,
							<span style="color:#d19a66">"weather"</span>: <span style="color:#98c379">"多云转小yu"</span>,
							<span style="color:#d19a66">"wid"</span>: {
								<span style="color:#d19a66">"day"</span>: <span style="color:#98c379">"01"</span>,
								<span style="color:#d19a66">"night"</span>: <span style="color:#98c379">"07"</span>
							},
							<span style="color:#d19a66">"direct"</span>: <span style="color:#98c379">"东南风向"</span>
						}
					]
				},
			<span style="color:#d19a66">"error_code"</span>: <span style="color:#d19a66">0</span>
		}
	}
}
]
</span></span>

https protocol

add https certificate

1. Create a new .keystore under the C:\Users\Administrator path to save the certificate

(The set computer name is different and the corresponding path is different)

2. Generate https certificate file (can be in cer or jks format)

Use win+r to enter cmd, and enter the following command in the cmd window

<span style="background-color:#282c34"><span style="color:#abb2bf">keytool -genkey -alias cps.cer -keyalg RSA -keystore C:<span style="color:#61aeee">\U</span>sers<span style="color:#61aeee">\A</span>dministrator<span style="color:#61aeee">\.</span>keystore<span style="color:#61aeee">\h</span>ttpsmoco.cer -keysize 1024 -validity 99999</span></span>

The operation is done in the command line, command explanation:
-alias Alias, each certificate must have its own unique name
-keyalg If it is an RSA algorithm, then it is RSA
-keystore Fill in the complete keystore file save path and file
name- keysize secret key length, generally 1024
-validity effective days

After that, you will be asked to enter the password of the secret key store, enter it twice in a row, you can set it yourself here, and then you will be asked to fill in some items, name, organization, city, etc., and finally you will be asked to enter the password of the certificate, which is also entered twice in a row , if it is the same as the certificate store password, you can directly press Enter to confirm (the key store password and certificate password should be used to start moco)

3. Use the dedicated command to try again in the JKS keystore:

<span style="background-color:#282c34"><span style="color:#abb2bf">keytool -importkeystore -srckeystore C:<span style="color:#61aeee">\U</span>sers<span style="color:#61aeee">\A</span>dministrator<span style="color:#61aeee">\.</span>keystore<span style="color:#61aeee">\h</span>ttpsmoco.cer -destkeystore C:<span style="color:#61aeee">\U</span>sers<span style="color:#61aeee">\A</span>dministrator<span style="color:#61aeee">\.</span>keystore<span style="color:#61aeee">\h</span>ttpsmoco.cer -deststoretype pkcs12</span></span>

The operation is as follows:

In this way, the certificate is successfully generated, and you can go to the directory to view it. The operation is as follows:

4. Start https service

Enter the directory where moco-runner-1.3.0-standalone.jar is located, then enter the cmd interface, and enter the command to start the https service

<span style="background-color:#282c34"><span style="color:#abb2bf"><span style="color:#98c379">java</span> -jar moco-runner-<span style="color:#d19a66">1</span>.<span style="color:#d19a66">3</span>.<span style="color:#d19a66">0</span>-standalone.jar https -p <span style="color:#d19a66">443</span> -c result.json --https C:\Users\Administrator\.keystore\httpsmoco.cer --cert httpsmoco --keystore httpsmoco</span></span>

Command explanation:
[443] https service is opened by default on port 443
[C:\Users\Administrator.keystore\httpsmoco.cer] the path where the cer certificate is located
[--cert httpsmoco] the password of the keystore (set in step 2 Keystore password)
[--keystore httpsmoco] certificate/key password (key password set in step 2)

Guess you like

Origin blog.csdn.net/liuqinhou/article/details/131227508