接口测试Ⅴ——Moco框架、Fiddler、webservice

文章目录

一、Mock

1、Mock测试

  • 介绍
    • mock:就是对于一些难以构造的对象,使用虚拟的技术来实现测试的过程
    • mock测试:在测试过程中,对于某些不容易构造或者不容易获取的对象,可以用一个虚拟的对象来代替的测试方 法。
    • 接口Mock测试:在接口测试过程中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替。
  • 作用
    • 解除对第三方接口的依赖
    • 替换查询速度较慢的接口
    • mock难以构造的异常
    • 可以搭建mock服务器,提前编写接口测试用例代码并行进行工作。
  • 实现方式
    • 使用第三方的mock平台来实现mock(收费)
    • 自己开发一个mock平台(了解)
      • python + flask 实现mock
    • 使用mock工具搭建一个mock平台(知道)
      • 使用moco工具实现mock平台

2、Python + Flask实现mock平台搭建

  • 介绍:flask是一个基于python开发的轻量级web应用程序框架
  • 安装flask:
    • 安装: pip install Flask
    • 验证: flask --version
  • 演示案例:
    • 编写Flask程序
import json
from flask import Flask, jsonify,request

# 创建一个应用对象
app = Flask(__name__)

# 定义视图函数,设置路由规则
@app.route("/index")
def index():
	print("访问的index主页")
	return "hello mock"

# {"mobile":"13800000002", "password":"123456"}
@app.route("/api/sys/login",methods=["POST"])
def login():
	result = json.loads(request.get_data().decode("utf-8")) # 字典形式的请求体数据
	mobile = result.get("mobile")
	password = result.get("password")
	print(mobile,password)
	if mobile =="13800000002" and password == "123456":
	data = {
		"success": True,
		"code": 10000,
		"message":"操作成功!",
		"token": "ajsdfj-12312-szs-fd-dfs"
	}
	else:
	data = {
		"success": False,
		"code": 99999,
		"message": "抱歉,系统繁忙,请稍后重试",
		"token": None
	}
	return data


if __name__ == '__main__':
	# 启动WEB服务器
	app.run()
  • 启动运行
    • 手动运行
    • pycharm运行
  • 访问
    • get(浏览器)
    • post(postman)

3、Moco框架

3.1 介绍

  • Moco是一个简单搭建模拟服务器的框架(工具),可以模拟http、https、socket等协议
  • 基于Java开发的开源项目,Github地址:https://github.com/dreamhead/moco
  • 原理:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起的请
    求满足某个 条件时,就会返回指定的响应数据

3.2 环境搭建

  • 前提:Java运行环境
  • 安装:moco-runner-1.1.0-standalone.jar

3.3 运行Moco

1、创建配置文件

[
	{
		"description": "首页",
		"request": {
			"uri": "/index"
		},
		"response": {
			"text": "hello world"
		}
	}
]

2、启动http服务

java -jar <path-to-moco-runner> http -p <monitor-port> -c <configuration-file>
<path-to-moco-runner> :jar包的路径

<monitor-port>:http服务监听的端口

<configuration-file>:配置文件路径

3、接口访问

3.4 常用配置参数

3.4.1 定义请求方法

通过在requests中通过method来指定请求方法

3.4.2 定义查询参数

可以通过queries来定制

3.4.3 定义请求头

通过headers参数定义

3.4.4 定义form格式的请求体

通过forms定义表单格式请求体
3.4.5 定义json格式的请求体
可以通过json参数定义请求体
3.4.6 设置响应的状态码
3.4.7 设置返回json格式的响应体数据
3.4.8 解决中文乱码问题
设置响应的Content-Type类型中charset=gbk
3.5 Moco引入配置文件
首先需要定义被依赖的多个配置文件
login.json的文件
index.json文件
定义config.json配置文件
把三个数据文件放在一起
重新使用java命令通过-g参数指定config.json
完整命令是:

java -jar moco-runner-0.11.0-standalone.jar http -p 8092 -g config.json

二、Fiddler

详情

1、 抓包工具

  • 通过抓包工具截取观察网站的请求信息,帮助我们更深入的了解网站
  • 通过抓包工具截取、观察网站的请求与返回信息,帮助测试进行BUG定位与描述
  • 通过抓包工具拦截修改请求信息,绕过界面的限制,测试服务端的功能

2、Fiddler原理

  • 请求先发送给Fiddler,Fiddler接收请求后转发给服务器
  • 服务器处理请求后将响应数据返回给Fiddler,Fiddler在转发给客户端(浏览器)

3、基础使用

抓包、删除请求、设置过滤

4、高级使用

设置断点、AutoResponder、Composer、弱网测试、HTTPS请求

三、webservice

1、webservice介绍

  • 简单的说webservice是一个跨语言跨平台的技术。
  • 使用webservice进行接口测试时,不需要知道每一种语言和操作系统。

2、webservice的工作原理

  • webservice主要使用4个核心技术
    • HTTP:使用http来传输数据
    • XML:使用XML来规定数据的请求体内容和响应体内容.webservice能够跨语言和跨平台的原因就是因为XML能跨语言,跨平台
    • SOAP:是一个规定XML内容规范的一个协议。(规定XML中结构、元素、参数的作用和使用方法)
    • WSDL:是一个XML形式的说明书,用来描述webservice中的相关信息(接口信息)

3、webservice和http接口区别

  • http接口
    • http接口一般传输的是表单数据和json数据,响应数据也一般是json类型
    • http接口请求方法,一般是GET,POST,PUT,DELETE
  • webservice接口
    • webservice采用soap协议传输数据。请求数据和响应数据都是XML类型
    • webservice的请求方法都是POST请求
    • webserivce支持更复杂的数据类型

4、webservice的接口测试工具

  • Postman(主要学习)
  • Jmeter
  • SoupUI
  • Python + requests

5、 演示案例

操作步骤:
1. 新建请求 getSupportCity
2. 设置请求方式为POST
3. 输入请求URL: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
4. 设置请求头: Content-Type: application/soap+xml; charset=utf-8
5. 设置请求体数据:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
	<soap12:Body>
		<getSupportCity xmlns="http://WebXml.com.cn/">
			<byProvinceName>北京</byProvinceName>
		</getSupportCity>
	</soap12:Body>
</soap12:Envelope>
6. 发送请求,查看响应结果
上一篇:全链路压测自动化实践


下一篇:js工具之mock.js