码迷,mamicode.com
首页 > 其他好文 > 详细

Locust 学习之路(关联)

时间:2018-06-12 17:48:14      阅读:671      评论:0      收藏:0      [点我收藏+]

标签:cme   连接   用户   quic   method   测试   概念   item   http   

关联的概念

用户登入后,服务器通常会给用户返回一个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]

 

Locust 学习之路(关联)

标签:cme   连接   用户   quic   method   测试   概念   item   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!