文章目录
一、Mock
1、Mock测试
- 介绍
- 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. 发送请求,查看响应结果