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[@name=‘session‘]/@value")[0]

原文地址:https://www.cnblogs.com/grandlulu/p/9174132.html

时间: 2024-08-01 20:10:42

Locust 学习之路(关联)的相关文章

Locust 学习之路 (集合点)

直接编写接口事务脚本对后台接口进行测试:有时测试需要让所有并发用户完成初始化后再进行压力测试,这就需要类似于LoadRunner中的集合点的概念,由于框架本身没有直接封装,有如下办法实现: from gevent._semaphore import Semaphore all_locusts_spawned = Semaphore() all_locusts_spawned.acquire() def on_hatch_complete(**kwargs): all_locusts_spawne

我的算法学习之路

关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口--况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程.然而这门课程并没有让我入门--当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾--反正最后考试划个重点也能过,于是这门整个计算机专业本

IOS学习之路- 运行过程

1. 执行Main函数(在main.m文件中) 2. 加载MainStoryborad.storyboard文件 * 创建ViewController文件 * 根据storyboard文件中描述创建ViewController中的UIView(父层) * 创建UIView内部的所有子控件 * 将创建好的所有UIView对象跟ViewController做相应的关联(IBAction,IBoutlet  ) 3. 将程序的第一个控制器内部的UIview显示到手机屏幕上. IOS学习之路- 运行过程

类与对象的学习之路

---恢复内容开始--- 学习java也有一段时间了,这周踏上了类与对象的学习之路,回过头来总结一下类与对象的基本知识.之前在大一上就接触了Python语言跟C语言,现在开始学习java语言了.我觉得跟之前学的C语言还是有区别的,至于在java书中提及的C++没学习,听别人说C++跟java有点像,这两种编程语言都是面向对象的,并且编程语言本身之间都有很多相似相同的地方. 一.说说类与对象 说到面向对象,那么不得不提的就是类和对象了.Java代码是以类为单位的.在我看来,类就是一个模板,比如一个

开始了大概三四天的Rails学习之路

最近因为一位极光推送朋友,我开始了大概三四天的Rails学习之路,最终达到的水平是可以比较轻松地做出大部分功能,然后自我感觉可以自如地按照Rails的设计思想去思考.由于编程的日益流行,我结识了越来越多非计算机系的学生出于爱好开始写代码,但是其中的大部分人也许在用着一些错误的学习方式来学习编程,为了避免大家再继续走弯路,在这篇文章中,我会介绍下一个初学者要如何学习Rails. 1. 为何而学,目标是什么? 今天和朋友在走路时,谈到要如何学习Rails,我问的第一个问题是,你为什么要学习Rails

Peng Gong:我的算法学习之路

原文出处: Lucida (@peng_gong) 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口--况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程.然而这门课程并没有让我入门--当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾--

iOS学习之路--下拉刷新和上拉加载更多

iOS学习之路--下拉刷新和上拉加载更多 简介 本文中笔者将和大家分享应用app中常用到的表单内容的下拉刷新和上拉加载更多的功能实现的方法. 内容 1.有哪些实现方法与各方法的优劣 使用过美团,大众点评的朋友们应该有注意到,当你向上滑动表单的时候会有更多的店铺加载进你的表单中,而当你下滑表单顶的时候,则会刷新表单的内容并从网络上获取最新的信息.通过下拉刷新和上拉加载更多的功能,使app可以获取更多用户想要的信息和获取最新的信息.那么这种功能如何实现呢,还请跟着笔者继续往下看. 目前来说,主要的实

初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像在给Qt做宣传,在主页上占了一栏的广告,只是,这时,我还没怎么刻意去留意这个陌生的字眼.在我大二上学期中下期时,即大概是2011年的12月,由于自己刚刚完成了汇编语言的入门学习,正要制订下一个学习目标,所以,又开始找起了资料,同时,也再次开始为自己的就业问题担心,于是,开始搜集一些招聘单位的信息,这时候,

转----我的算法学习之路

我的算法学习之路 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 原文链接:http://zh.lucida.me/blog/on-learning-algorithms/ 原文作者:Lucida 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程