Locust 关联
关联的概念
用户登入后,服务器通常会给用户返回一个sessionID, 用户每次登陆,服务器返回的都会不同。
那么在自动化测试中,让系统自动登入账号就会被中断。那么我们可以通过取得服务器每次返回的session来让账号登入成功。这个过程就叫做关联
目的
在用过Loadrunner后,我们同样可以把其中测试的概念用Locust实现。
Loadrunner中,关联是通过web_reg_save_param函数,通过类似正则表达式查找到session,并通过修改,实现每次连接都会从服务器取到相应的session。
本篇将实现Locust中达到Loadrunner关联相同效果
lxml 库 和 xpath 定位
通过lxml库的etree和xpath方法,我们可以定位html中的任何元素。
自动化测试selenium和分布式爬虫对于html页面的操作通常也可以用xpath来定位元素,so lxml库的应用场景可以放在很多地方,此处我们将用它取得我们得session value。
安装lxml:
pip install lxml
Quick start:
from lxml import etree doc = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
</ul>
</div>
'''
tree = etree.HTML(doc)
res = tree.xpath('路径定位')
print(res)
Quickstart中,实例化tree后通过xpath方法,定位元素路径,并获得他的值。
外部获取html文件可以用parse方法:
from lxml import etree
tree = etree.parse('html文件名')
res = tree.xpath('路径定位')
print(res)
xpath中路径表达式如下表:
| 表达式 | 描述 |
|---|---|
| nodename | 选取此节点的所有子节点。 |
| / | 从根节点选取。 |
| // | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
| . | 选取当前节点。 |
| .. | 选取当前节点的父节点。 |
| @ | 选取属性。 |
样例:
取class为“item-0”:
from lxml import etree
tree = etree.parse('文件名')
res = tree.xpath('//li[@class="item-0"]')
print(res)
输出结果:
[<Element li at 0x28ba323fb48>]
取class为“item-0”下,href为“link1.html”:
from lxml import etree
tree = etree.parse('文件名')
res = tree.xpath('//li[@class="item-0"]/a[@href="link1.html"]')
print(res)
输出结果:
[<Element a at 0x1f8f7840b48>]
关联应用
回到关联得使用,通过lxml取得html页面的session
from lxml import etree
from locust import TaskSet, task, HttpLocust
class UserBehavior(TaskSet):
@staticmethod
def get_session(html):
tree = etree.HTML(html)
return tree.xpath("//div[@class='xxx']/input[@xxx='session']/@value")[0]
@task(10)
def test_login(self):
html = self.client.get('/login').text
username = 'xxx'
password = 'xxx'
session = self.get_session(html)
datas = {
'username': username,
'password': password,
'session': session
}
self.client.post('/login', data=datas)
Locust 关联的更多相关文章
- python locust 性能测试:locust 关联---提取返回数据并使用
from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehav ...
- Locust 性能测试工具安装使用说明
1. 介绍 它是一个开源性能测试工具.使用 Python 代码来定义用户行为.用它可以模拟百万计的并发用户访问你的系统. 性能工具对比 LoadRunner 是非常有名的商业性能测试工具,功能 ...
- Locust性能测试4-参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...
- Locust性能测试_参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...
- locust参数关联及批量注册
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点,需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:http ...
- 性能测试工具Locust的使用
一.写在前面 官网:https://www.locust.io/ 官方使用文档:https://docs.locust.io/en/latest/ 大并发量测试时,建议在linux系统下进行. 二.L ...
- Python3中性能测试工具Locust安装使用
Locust安装使用: 安装: python3中 ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help ...
- 开源性能测试工具Locust使用篇(三)
脚本增强 面对较复杂的测试场景,我们可能还是会感觉无从下手:例如,很多时候脚本需要做关联或参数化处理,Locust中就不知道怎么实现了.可能也是这方面的原因,感觉难以将Locust应用到实际的性能测试 ...
- locust的安装与使用
Contents Locust这一款开源性能测试工具.然而,当前在网络上针对Locust的教程极少,不管是中文还是英文,基本都是介绍安装方法和简单的测试案例演示,但对于较复杂测试场景的案例演示却基本没 ...
随机推荐
- POJ2115:C Looooops(一元线性同余方程)
题目: http://poj.org/problem?id=2115 要求: 会求最优解,会求这d个解,即(x+(i-1)*b/d)modm;(看最后那个博客的链接地址) 前两天用二元一次线性方程解过 ...
- Java transient关键字的理解
transient [ˈtrænziənt] adj. 短暂的; 转瞬即逝的; 临时的 n 临时旅客; 瞬变现象; 候鸟; 1. transient的作用及使用方法 我们都知道一个对象只要 ...
- 查准率与查全率(precision and recall) 的个人理解
假设要识别照片中的狗的,在一些照片中,包含12只狗的照片和一些猫的照片.算法识别出有8只狗.在确定的8只狗中,5只实际上是狗(真阳性TP),而其余的是猫(假阳性FP).该程序的精度为5/8,而其召回率 ...
- 通过Python来操作kylin
起因: 老大要求的数据,无法通过kylin里面的SQL查询到,只能通过调用接口来实现需求 第一步,安装依赖的包(py2/py3都支持,我这边用的是py2) pip install kylinpy pi ...
- ArrayBuffer:类型化数组
类型化数组是JavaScript操作二进制数据的一个接口. 这要从WebGL项目的诞生说起,所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足JavaScript与显卡之间大量的.实时的数据交 ...
- 【运维技术】node项目使用strongloop进行部署相关教程
node项目使用strongloop进行部署相关教程 安装strongloop 下载安装node 解压到路径完成安装 使用软链方式配置环境变量 添加cnpm的淘宝镜像源 安装node-gyp的模块依赖 ...
- Python3.x:sys.argv[]的简介
Python3.x:sys.argv[]的简介 sys模块通过sys.argv提供对任何命令行参数的访问.主要有两个参数变量: sys.argv是命令行参数的列表. len(sys.argv)是命令行 ...
- Windows Shell编程之如何编写为文件对象弹出信息框的Shell扩展
有关COM编程资料 转载:http://www.cnblogs.com/lzjsky/archive/2010/11/22/1884702.html 活动桌面引入一项新特性, 当你在某些特定对象上旋停 ...
- ubuntu18.04下挂载网络文件系统失败【学习笔记】
作者:庄泽彬(欢迎转载,请注明作者) PC: ubuntu18.04 说明: 之前ubuntu16.04下搭建的环境,开发板挂载网络文件系统是ok的,但是换到ubuntu18.04在启动的时候 ...
- Ubuntu下录制屏幕并转换成gif【转】
本文转载自:https://blog.csdn.net/u012964944/article/details/50464263 *录制屏幕 1)打开Ubuntu软件中心,安装RecordMyDeskt ...