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

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"

@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__':

    app.run()
  • 启动运行
  • 手动运行
  • pycharm运行
  • 访问
  • get(浏览器)
  • post(postman)

3、Moco框架

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

  • 前提:Java运行环境

  • 安装:moco-runner-1.1.0-standalone.jar

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、接口访问

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

可以通过queries来定制

通过headers参数定义

通过forms定义表单格式请求体

可以通过json参数定义请求体

设置响应的Content-Type类型中charset=gbk

首先需要定义被依赖的多个配置文件

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

1、 抓包工具

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

2、Fiddler原理

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

3、基础使用

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

4、高级使用

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

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. 设置请求体数据:

<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. 发送请求,查看响应结果

Original: https://blog.csdn.net/qq_31870305/article/details/116310074
Author: zkFun
Title: 接口测试Ⅴ——Moco框架、Fiddler、webservice

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/750204/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Keil uVision5软件的操作与编写基础(入门)

    目录 👬一、如何新建一个空白文档 👬 二、程序编写 👬 三、编译程序 Keil uVision5是一款编写单片机程序的必备软件。其图标为: 一、如何新建一个空白文档 1.打开Kei…

    Python 2023年10月8日
    061
  • 单片机扫盲

    一、从电路到集成电路 集成电路:使用微器件为”积木”,去搭建一个具备一定功能的电路板微器件出现之前,一个电路功能需要很大一块电路板才能实现,有了微器件电路板…

    Python 2023年9月29日
    057
  • python对日期型数据排序_python – pandas dataframe按日期排序

    我通过导入csv文件创建了一个数据帧.并将date列转换为datetime并将其作为索引.但是,在对索引进行排序时,它不会产生我想要的结果 print(df.head()) df[…

    Python 2023年8月19日
    044
  • Pthread 并发编程(一)——深入剖析线程基本元素和状态

    Pthread 并发编程(一)——深入剖析线程基本元素和状态 前言 在本篇文章当中讲主要给大家介绍 pthread 并发编程当中关于线程的基础概念,并且深入剖析进程的相关属性和设置…

    Python 2023年10月16日
    052
  • [性能测试] Python 内存数据库 Cyber​​DB VS Redis

    由于 CyberDB 中 proxy 的 connect 方法会检测连接是否有效,为了确保测试的公平性,我们将使用 redis 的 ping 方法与之对应。 文章将采用 Gunic…

    Python 2023年8月13日
    044
  • NginX + PostgreSQL + uWSGI + Django

    rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm …

    Python 2023年8月4日
    049
  • 1、pytest简介 pytest是一个成熟的python单元测试框架,可以和selenium、requests、appium等结合实现web、接口及app自动化。能够实现用例管理…

    Python 2023年9月12日
    067
  • MATLAB 双目相机标定

    MATLAB 双目相机标定 Write by Champrin on 2022-12-11GUET Evolution Team Visual GroupReference art…

    Python 2023年10月28日
    049
  • LVGL库入门教程 – 颜色和图像

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月15日
    093
  • Pandas数据分析:快速图表可视化各类操作详解+实例代码(三)

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年8月2日
    047
  • Javaweb-IDEA 中Maven的操作

    在idea中使用Maven 启动idea 创建一个MavenWeb项目 3.等待项目初始化完毕 观察maven仓库中多了哪些东西 idea中的maven设置 注意:idea项目创成…

    Python 2023年6月12日
    067
  • 2019hexo博客部署到coding该绕的坑-奥怪的小栈

    这篇文章适用于初次部署和部署到github后想双线部署到coding的朋友们,我将带你们绕过一些我踏过的坑。 前言 我一开始没打算将博客部署到coding上的,想着部署到githu…

    Python 2023年6月11日
    074
  • Django启航(三)Django模型

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年8月6日
    040
  • Nacos注册中心

    Nacos注册中心 Nacos注册中心 * 一、Nacos服务端和服务注册 – 1.新建maven工程(服务端),引入pom依赖 2.服务注册 + (1)引入pom依赖…

    Python 2023年11月6日
    043
  • 问题解决之:chatGPT 登录页面的 google 验证 reCAPTCHA 弹不出来

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月4日
    044
  • GPU版本PyTorch详细安装教程

    目录 一、安装显卡驱动 1、查看显卡驱动型号 2、下载显卡驱动 3、查看GPU状态 二、安装Visual Studio 2019 三、安装CUDA 1、下载对应版本的CUDA 2、…

    Python 2023年9月7日
    0120
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球