python locust 性能测试:locust 关联---提取返回数据并使用

from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig

class UserBehavior(TaskSet):  # 定义用户行为

def on_start(self):  # 当模拟用户开始执行TaskSet类的时候,on_start方法会被调用
        pass

def get_headers(self):   """会员登录"""        headers = {            "Content-Type": "application/json",            "channel": "SHOP"        }        body = {            "unionid": readConfig.unionid # 这样使用会报错,没有 common ...        }        res = self.client.post(‘/customers/login‘, headers=headers, data=json.dumps(body)).text        assert ‘成功‘ in res  # 断言,判断接口返回是否成功        res = json.loads(res)        uid = res[‘data‘][‘uid‘]         ukey = res[‘data‘][‘ukey‘]        return [uid, ukey] # 会员登录返回的uid和ukey

@task(1)  # @task() 装饰该方法为一个任务;1表示一个Locust实例被挑选执行的权重,数值越大,执行频率越高;    def members_can_withdraw_account_information(self):  # 一个行为         """使会员获取会员状态"""        res = self.get_headers()        headers = {            "channel": "SHOP",            "uid": str(res[0]),            "ukey": res[1]        }        response = self.client.put("/customers/customer_state",                                   headers=headers).text  # client.get()用于指请求的路径,可加headers,params,body参数;        assert ‘成功‘ in response

@task(1)    def get_member_account_withdrawal_details(self):        """获取会员账户提现明细"""        res = self.get_headers()        headers = {            "channel": "SHOP",            "uid": str(res[0]),            "ukey": res[1]        }        params = {            "page": "10",            "size": "10"        }        response = self.client.get("/customers/account/withdraw/log", headers=headers, params=params).text        assert ‘成功‘ in response

class WebsiteUser(HttpLocust):  # 设置性能测试;    host = "http://dev.sign.lixiaofeng.com"    task_set = UserBehavior  # 指向一个定义了的用户行为类;    min_wait = 3000  # 用户执行任务之间等待时间的下界,单位:毫秒;    max_wait = 6000  # 用户执行任务之间等待时间的上界,单位:毫秒;

原文地址:https://www.cnblogs.com/changqing8023/p/9557545.html

时间: 2024-09-30 07:00:58

python locust 性能测试:locust 关联---提取返回数据并使用的相关文章

python操作MONGODB数据库,提取部分数据再存储

目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数.从每个集合中提取的数据存放到新的对应集合中,新集合名称为原先集合加"_col". 用到相关技术点: 操作MONGODB: 先通过IP和端口号连接到MONGODB所在的机器,得到一个MONGODB客户端对象,然后认证某个数据库的账号密码连接到该数据库,得到一个该数据库的对象.一个数据库下有很

Jmeter----正则表达式提取respones数据

在做jmeter性能或接口测试时,经常要去获取respones里的某个值,作为下个线程或HTTP 的请求数据,这个时候用正则表达式非常方便的获取到. 我的一个直播软件的测试实例: 1.  在相应的HTTP请求事件下右击添加后置处理器,并选择正则表达式提取器: 2.  设置好正则表达式里的相关内容 引用名称(你要用于后续使用的变量名称,这里我取的是cookies的值,变量名为TSSID) 正则表达式(用正则提取返回数据的某个部位的值) 模板(一般默认$1$,表示结果中有很多个值的时候获取第一个)

locust性能测试4-参数关联

前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:https://account.chsi.com.cn/passport/login]的登录接口请求参数 请求参数 需要先发个get请求,从返回的html页面中解析出需要的数据 lt : LT-277623-5ldGTLqQhP4foKihHUlgfKPeGGyWVI execution: e1s1 备注

Python Locust性能测试框架实践

Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装python2.6以上版本,而且有pip工具.之后打开命令行,分别安装locustio和pyzmq(命令如下): pip install locustio pip install pyzmq 之后我们就可以写性能测试脚本了. Locust脚本编写 接下来我们拿两个接口做一下测试,编写脚本如下(每一步都有注释).我来解释一下,首先我们要i

基于python的性能测试工具–locust

现在有很多的性能测试工具,比如说我们熟悉的loadrunner.jmeter.ab.webbench等等,这些工具如果对一个没用过的朋友来说,学习起来比较不容易,但是如果你能看懂python代码,会写就更好了,就可用尝试一下今天的主角Locust,一款基于python的性能测试工具,它的优点是学习起来比较简单,功能完全自定制,使用比较灵活,支持分布式. 所有的性能测试工具都至少包含这3块:               1.压力产生器,也就是可以指定产生多大的压力,多少并发:          

python接口自动化-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅只传username和psw两个参数,往往有其它的动态参数.有时候还需要带上cookies参数,如JSESSIONID 登录参数 首先分析下目标网站[学信网:https://account.chsi.com.cn/passport/login]的登录接口请求参数.先随便输入账号和密码,使用fiddler工

locust安装及其简单使用----基于python的性能测试工具

1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you intend to run Locust distributed across multiple processes/machines, we recommend you to also install pyzmq. 如果你打算运行Locust 分布在多个进程/机器,我们建议你也安装pyzmq. 通过pip命

python locust 性能测试:HttpSession

官网解释:用于在请求之间执行Web请求和保留(会话)cookie的类(以便能够登录和退出网站):记录每个请求,以便locust可以显示统计信息: from locust import TaskSet, task, HttpLocust, Locust from locust.clients import HttpSession import subprocess import random from common.sec_encrypt import AESEncrypt, md5_time f

python locust 性能测试:HOOKS<钩子方法>

为locust中不同类型的事件,提供的钩子方法: from locust import TaskSet, task, events, Locust from locust.clients import HttpSession import subprocess import random, traceback from common.sec_encrypt import AESEncrypt, md5_time from common import read_config from common