python多线程性能测试之快速mock数据

目录
  • 背景
  • 安装相关类包
  • 快速 mock kafka 批量测试数据
  • appmetrics 使用方法
    • Meters

背景

在我们测试工作中,性能测试也是避免不了的,因此在性能测试前期准备工作中,需要 mock 足够批量的数据进行压测。那么怎么能在短时间内快速 mock 出想要的格式数据和足够量的数据进行压测?那么往下看。

安装相关类包

  • pip install kafka
  • pip install appmetrics
  • pip install faker
  • pip install pykafka

快速 mock kafka 批量测试数据

# -* coding:utf8 *-
from pykafka import KafkaClient
import uuid
import time
import threading
from appmetrics import metrics
from faker import Faker
import os
fake = Faker("zh-cn")
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
meter = metrics.new_meter("meter_test")
host_producer = 'host地址'
def data_info():
    uid = str(uuid.uuid4())
    suid = ''.join(uid.split('-'))
    return suid
def data_result():
    #数据格式可自行定义
    data = f"{data_info()},{fake.phone_number()},111111111111,LOL-UZI"
    return data
def mock_request():
    client_producer = KafkaClient(hosts=host_producer)
    topicdocu = client_producer.topics['XXXXXXX-TOPIC']
    producer = topicdocu.get_producer(sync=False) # sync=False  关闭同步,使用异步
    while True:
        data_uni = data_result()
        producer.produce(bytes(data_uni, encoding='utf-8'))
        meter.notify(1) # 请求一次 记录器打点一次
        # i = i - 1
    producer.stop()
def print_meter():
    while True:
        print(meter.get())
        time.sleep(1)
def thread_request(nums):
    t1 = []
    for i in range(nums):
        if i == 0:
            #该线程是为了记录每秒打点作用
            t = threading.Thread(target=print_meter, name="T" + str(i))
        else:
            t = threading.Thread(target=mock_request, name="T" + str(i))
        t.setDaemon(True)
        t1.append(t)
    for t in t1:
        t.start()
    for t in t1:
        t.join()
#
#
if __name__ == '__main__':
    thread_request(101)

appmetrics 使用方法

Meters

Meters,度量一系列事件发生的速率 (rate),例如 TPS。Meters 会统计最近 1 分钟,5 分钟,15 分钟,还有全部时间的速率。

meter = metrics.new_meter(“meter_test”)
meter.notify(1)
meter.notify(1)
meter.notify(3)
meter.get()

返回结果:

{'count': 5, 'kind': 'meter', 'five': 0.0066114184713530035, 'mean': 0.27743058841197027, 'f

以上就是python批量测试多线程之快速mock数据的详细内容,更多关于python测试多线程mock数据的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python MOCK SERVER moco模拟接口测试过程解析

    MOCK的意义 1.接口测试等待开发完成接口开发之后再进行,不符合测试的尽早测试的基本原则,我们可以利用MOCK工具来模拟接口,减少对开发的依赖,从而可使测试与开发同步进行 2.接口存在很多依赖关系,现实中,由于一些客观的原因,我们在测试环境所要的测试条件可能无法满足,此时就需要我们用MOCK工具来进行模拟,如网上商城有个支付业务,与工商银行做对接,工商银行只提供正式环境的对接,没有测试环境支持,那我们在测试环境测试就需要利用MOCK工具进行模拟,完成支付业务流 mock工具-moco 官网地址

  • python 如何在测试中使用 Mock

    Mock概念 mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对所依赖的模块的测试. 一般有两种场景: 前端对后端接口的 mock, 后端服务之间的测试中涉及的mock,常常发生在单元测试的时候. 前端mock可以通过一些工具来完成: 使用抓包工具Fiddler,Charles 来实现,通过修改代理返回的数据,实现多种场景的测试. 使用一些API管理工具来模拟,比如yapi,Easy Mock 等 当然有编码能力的,也可以使用node.js,python

  • Python Mock模块原理及使用方法详解

    一.mock是什么? 英译中含义有:虚假的; 不诚实的; 模仿的; 模拟的 这个意思 这个库的主要功能就是模拟一些事务 官方解释:Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为 二.为什么要用mock? 举例: 假设你开发一个项目,里面包含了一个登录模块,登录模块需要调用身份证验证模块中的认证函数,该认证函数会进行值的返回,然后系统根据这个返回值来做判断是否能进行登录.但是身份证验证模块中的认证函数只有在正式上线

  • python mock测试的示例

    mock总所周知是模拟的意思,我们在做接口测试的时候有时候会发现部分功能依赖其他业务场景或者第三方功能或者是线上数据或者业务场景过于复杂(需要大量调用)的情况,没有办法通过接口调用或者做断言,这个时候就需要mock了 python2中需要pip install mock来导入mock第三方模块,而python3中被引入到unittest框架中,直接from unittest import mock 就可以导入mock模块了 在单元测试中只针对当前单元做测试,就是测试当前方法或者是当前类,但是如果

  • python如何构建mock接口服务

    引言 Mock 即模拟,就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,其最大的优势就是降级前后端耦合度,使前端工程师可以不依赖后端返回数据,先开发前端样式以及逻辑处理 简单来说: Mock是用了解决依赖问题的,将复杂的/不稳定的/还未建立的依赖对象用一个简单的假对象来代替. Mock Server 即Mock接口服务器,可以通过配置快速Mock出新的接口 Mock Server的使用范围: 前后端分离项目 所测接口依赖第三方系统(还未具备)

  • python中的mock接口开发示例详解

    什么是mock? mock在翻译过来有模拟的意思.它允许您用模拟对象替换您的系统的部分,并对它们已使用的方式进行断言. Mock通常是指,在测试一个对象时,我们构造一些假的对象来模拟与其交互.而这些Mock对象的行为是我们事先设定且符合预期.通过这些Mock对象来测试对象在正常逻辑,异常逻辑或压力情况下工作是否正常,Mock的行为固定,它确保当你访问该Mock的某个方法时总是能够获得一个没有任何逻辑的直接就返回的预期结果.Mock接口就是用一些合理的手段构造对象去模拟真实接口. import f

  • python多线程性能测试之快速mock数据

    目录 背景 安装相关类包 快速 mock kafka 批量测试数据 appmetrics 使用方法 Meters 背景 在我们测试工作中,性能测试也是避免不了的,因此在性能测试前期准备工作中,需要 mock 足够批量的数据进行压测.那么怎么能在短时间内快速 mock 出想要的格式数据和足够量的数据进行压测?那么往下看. 安装相关类包 pip install kafka pip install appmetrics pip install faker pip install pykafka 快速

  • Python爬虫过程解析之多线程获取小米应用商店数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT共享之家 ,作者IT共享者 前言 小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个地搜索太麻烦了.而且速度不是很快. 今天用多线程爬取小米应用商店的游戏模块.快速获取. 二.项目目标 目标 :应用分类 - 聊天社交 应用名称, 应用链接,显示在控制台供用户下载. 三.涉及的库和网站 1.网址:百度搜 - 小米应用商店,进入官网. 2.涉及的库:re

  • python多线程+代理池爬取天天基金网、股票数据过程解析

    简介 提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金网进行爬虫,该网站具有反爬机制,同时数量足够大,多线程效果较为明显. 技术路线 IP代理池 多线程 爬虫与反爬 编写思路 首先,开始分析天天基金网的一些数据.经过抓包分析,可知: ./fundcode_search.js包含所有基金的数据,同时,该地址具有反爬机制,多次访问将会失败的情况. 同时,经

  • 使用python在本地电脑上快速处理数据

    大数据一般是在"云"上玩的,但"云"都是要钱的,而且数据上上下下的也比较麻烦.所以,在本地电脑上快速处理数据的技能还是要的. pandas 在比赛中学到的一个工具,本地可以在亿级别的数据上进行聚合等操作.内部的数据包括: • Series:一维数组,每个元素有一个标签 • DataFrame:二维表格,可以看做Series的集合 • Panel:三维数据 数据的初始化 我们可以通过构造函数来初始化,从下面的代码中可以想象得到数据是样子: from pandas im

  • Python多线程与多进程相关知识总结

    一.什么是进程 进程是执行中的程序,是资源分配的最小单位:操作系统以进程为单位分配存储空间,进程拥有独立地址空间.内存.数据栈等 操作系统管理所有进程的执行,分配资源 可以通过fork或 spawn的方式派生新进程,新进程也有自己独立的内存空间 进程间通信方式(IPC,Inter-Process Communication)共享信息,实现数据共享,包括管道.信号.套接字.共享内存区等. 二.什么是线程 线程是CPU调度的的最小单位 一个进程可以有多个线程 同进程下执行,并共享相同的上下文 线程间

  • python多线程与多进程及其区别详解

    前言 个人一直觉得对学习任何知识而言,概念是相当重要的.掌握了概念和原理,细节可以留给实践去推敲.掌握的关键在于理解,通过具体的实例和实际操作来感性的体会概念和原理可以起到很好的效果.本文通过一些具体的例子简单介绍一下python的多线程和多进程,后续会写一些进程通信和线程通信的一些文章. python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来均以后者为例. 创建线程 pytho

  • Python多线程原理与用法详解

    本文实例讲述了Python多线程原理与用法.分享给大家供大家参考,具体如下: 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系统包括对称多处理机.多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器.[1] 在一个程序中,这些独立运行的程序片

  • python多线程超详细详解

    python中的多线程是一个非常重要的知识点,今天为大家对多线程进行详细的说明,代码中的注释有多线程的知识点还有测试用的实例. import threading from threading import Lock,Thread import time,os ''' python多线程详解 什么是线程? 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位. 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程

  • python 多线程实现多任务的方法示例

    目录 1 多线程实现多任务 1.1 什么是线程? 1.2 一个程序实现多任务的方法 1.3 多线程的创建方式 1.3.1 创建threading.Thread对象 1.3.2 继承threading.Thread,并重写run 1.4 线程何时开启,何时结束 1.5 线程的 join() 方法 1.6 多线程共享全局变量出现的问题 1.7 互斥锁可以弥补部分线程安全问题.(互斥锁和GIL锁是不一样的东西!) 1.8 线程池ThreadPoolExecutor 1.8.1 创建线程池 1.8.2 

  • 分析详解python多线程与多进程区别

    目录 1 基础知识 1.1 线程 1.2 进程 1.3 两者的区别 2 Python 多进程 2.1 创建多进程 方法1:直接使用Process 方法2:继承Process来自定义进程类,重写run方法 2.2 多进程通信 Queue Pipe 2.3 进程池 3 Python 多线程 3.1 GIL 3.2 创建多线程 方法1:直接使用threading.Thread() 方法2:继承threading.Thread来自定义线程类,重写run方法 3.3 线程合并 3.4 线程同步与互斥锁 3

随机推荐