服务器与客户端性能测试,深聊性能测试,从入门到放弃之:Locust性能自动化(四)自定义客户端测试...

本文介绍深聊性能测试,从入门到放弃之:Locust性能自动化(四)自定义客户端测试,举例源码综合分析了这个知识,无论是学习还是工作都有很大的帮助,喜欢的请深究。

1、引言

十一期间,看着朋友圈的各个大佬都是北京游,上海游,云南游,海南游等等。

我就不一样了,github游,CSDN游,B站游,知乎游,掘金游等等…

反正,十一假期,我是没闲着(开没开车,不确定)…

我们今天来看看Locust如何自定义客户端测试系统的 ,

由于基础内容,在第一章节,已经介绍完。

所以本章内容,就是实例展示!!

2、实例展示

2.1 定义

Locust以HTTP为主要目标构建。但是,通过编写触发request_success 和request_failure事件的自定义客户端,可以轻松扩展对任何基于请求/响应的系统进行负载测试。

2.2 客户端代码展示

我们使用User类XmlRpcUser的示例,来看看XmlRpcUser如何发送请求。

老规矩,上代码

# -*- coding: utf-8 -*-

"""

@ auth : carl_DJ

@ time : 2020-10-05

"""

import time

from xmlrpc.client import ServerProxy, Fault

from locust import User, task, between

class XmlRpcClient(ServerProxy):

"""

Simple, sample XML RPC client implementation that wraps xmlrpclib.ServerProxy and

fires locust events on request_success and request_failure, so that all requests

gets tracked in locust's statistics.

"""

_locust_environment = None

def __getattr__(self, name):

func = ServerProxy.__getattr__(self, name)

def wrapper(*args, **kwargs):

start_time = time.time()

try:

result = func(*args, **kwargs)

except Fault as e:

total_time = int((time.time() - start_time) * 1000)

self._locust_environment.events.request_failure.fire(

request_type="xmlrpc", name=name, response_time=total_time, exception=e

)

else:

total_time = int((time.time() - start_time) * 1000)

self._locust_environment.events.request_success.fire(

request_type="xmlrpc", name=name, response_time=total_time, response_length=0

)

# In this example, I've hardcoded response_length=0. If we would want the response length to be

# reported correctly in the statistics, we would probably need to hook in at a lower level

return wrapper

class XmlRpcUser(User):

"""

This is the abstract User class which should be subclassed. It provides an XML-RPC client

that can be used to make XML-RPC requests that will be tracked in Locust's statistics.

"""

abstract = True

def __init__(self, *args, **kwargs):

super(XmlRpcUser, self).__init__(*args, **kwargs)

self.client = XmlRpcClient(self.host)

self.client._locust_environment = self.environment

class ApiUser(XmlRpcUser):

host = "http://127.0.0.1:8877/"

wait_time = between(0.1, 1)

@task(10)

def get_time(self):

self.client.get_time()

@task(5)

def get_random_number(self):

self.client.get_random_number(0, 100)

这段示例,也是没有什么难度,如果 通过Locust编写过测试脚本或者进行过测试,那么就很容易理解。

但是,在这里,小鱼还是强调一次,

在这段代码中:

①你可以认识到ApiUser的类,这是一个普通的类,只是声明了几个任务;

②ApiUser继承自XmlRpcUser ,这个可以在ApiUser类上看到;

③abstract = True,则标记为Locust不会尝试从该类创建模拟用户(仅扩展该类的类)。

④ XmlRpcUser在客户端属性下提供XmlRpcClient的实例。

2.3 服务器端代码展示

这是XML-RPC服务器的实现,该服务器可用作客户端代码的服务器。

代码展示:

# -*- coding: utf-8 -*-

"""

@ auth : carl_DJ

@ time : 2020-10-05

"""

import time

from xmlrpc.server import SimpleXMLRPCServer

def get_time():

time.sleep(random.random())

return time.time()

def get_random_number(low, high):

time.sleep(random.random())

return random.randint(low, high)

server = SimpleXMLRPCServer(("localhost", 8877))

print("Listening on port 8877...")

server.register_function(get_time, "get_time")

server.register_function(get_random_number, "get_random_number")

server.serve_forever()

今天的代码,就分享到这里,

今天的代码,也很简单,

小鱼不写这么多,是因为怕耽误各位十一假期出游啊 ~ ~

同样,小鱼再唠叨一次,可能是习惯性,毕竟写的是系列博文。

带你认识 locust,从此不再仅限于 Loadrunner、Jmeter性能功能。

让你了解locust的内涵,自己也可以动手写性能测试脚本。

让你提高性能,遨游性能的海洋。

带你揭开,客户端测试其他系统的方法。

关键词:python,性能,性能测试,测试,入门,放弃,弃之,自动,自动化,自定义,定义,客户,客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值