locust参数化(数据库取值)

基于上一篇参数化的梳理,本篇用另一种方法从数据库中取出这100个用户来登录

思路:在 TaskSet 中的 on_start 方法表示执行任务前的操作,可以将数据库取数据的这个操作放在里面执行

from locust import task,TaskSet,HttpLocust
import pymysql
import os

class MyTaskSet(TaskSet):

    def run_sql(self):
        self.connect = pymysql.connect(
            host = "192.168.x.xx",
            database = "xxx",
            user = "xxx",
            password = "xx"
        )
        cursor = self.connect.cursor()
        sql = "SELECT userAccount FROM t_sys_user WHERE userAccount LIKE ‘w0%‘;" # 查询出用户名语句
        cursor.execute(sql) # 执行查询语句
        res = cursor.fetchall() # 保存查询结果
        self.user_list = [] # 查询出来的结果为元组中嵌套长度为1的元组,不方便取值,这里用列表保存下来
        for i in res:
            self.user_list.append(i[0])
        print(self.user_list)
        cursor.close()
        self.connect.commit()
        self.connect.close()
        return self.user_list # 返回列表

    def on_start(self):
        self.run_sql()  # 执行task前运行一次run_sql函数

    def on_stop(self):
        print("----- Test over -----")

    @task
    def login(self,pwd="b123456"):
        self.headers = {
            "Origin": "http://192.168.1.9:8080",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
        }
        path = "/SSOAuth?action=login&code=undefined&gotoURL=http%3A%2F%2F192.168.1.9%3A8080%2Fportal%2Fgeoindex.do"

        for user_account in self.user_list:
            da = {"userAccount": user_account, "pwd": pwd}
            data = {
                "data": ‘%s‘ % da
            }
            self.client.post(path, headers=self.headers, data=data, verify=False)

class MyLocust(HttpLocust):
    """w01~w0100为有效用户名,密码为默认的b123456"""
    task_set = MyTaskSet  # 指向任务集合
    host = "http://192.168.1.9:8080"  # web项目的话这里要设置host属性,否则是报错的

if __name__ == ‘__main__‘:
    # os模块执行系统命令,相当于在cmd切换到当前脚本目录,执行locust -f locust_login.py
    os.system("locust -f locust_login_db.py")

原文地址https://blog.csdn.net/qq_39620483/article/details/89639653

很好的博客https://blog.csdn.net/qq_39620483

原文地址:https://www.cnblogs.com/111testing/p/10998726.html

时间: 2024-10-31 02:29:30

locust参数化(数据库取值)的相关文章

LoadRunner脚本实例来验证参数化的取值

LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出:  主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d)[jUh :o$F$kY+sO/y"Yr5S0方法:51Testing软件测试网$_v.sR$tS*T)} TJS]#v3u%bi"?!}0脚本:  我把取到的参数值和对应的VuserID记录下来保存到一个文件中,下面是例子的脚本 X-n)SI:J#t:v:YM'v#X0 long fi

jmeter参数化随机取值实现

jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数__CSVRead()来实现: __CSVRead() CSV file to get values from | *alias:表示要读取的文件路径 CSV文件列号| next| *alias:表示当前变量读取第几列数据,注意第一列是0: 由此可见我们只需将参数化数据在csv中横向排列,然后用随机函数__Random()指定文件序列号即可. ${__CSVRead(D:\t.tx

与Mysqli相关的四种数据库取值

<!--取值方案一:通过数字数组 fetch_row()--><meta http-equiv="Content-Type" content="text/html" charset="utf-8"><?php/** * Created by PhpStorm. * User: Administrator * Date: 2015/8/27 * Time: 11:00 */ //数据库连接$_mysqli=new my

数据库取值 三级分类后台遍历

/** * 将从数据库读取的标签一维数组转成标签树形式 * 根据每个值的parent_id, 将其变为相应值的叶子 * @params array $tagList 从数据库读取的一维数组, 数组每个值包含id和parent_id * int $root树根节点的父id string $id 默认为id列名 string $pid 默认为parent_id列名 string $child分支点的索引 * @return array $tree 多维数组的标签树 * */static functi

使用powershell连接oracle数据库(取值、更新)

在工作中我们常常需要使用powershell连接Oracle数据库.但是在百度找到的代码都是很老的,而且还需要oracle数据库连接客户端.查找一番后发现Oracle官方早已经发布了对.net官方连接库,高效简单.连接库地址:https://www.oracle.com/technetwork/developer-tools/visual-studio/overview/index.html 我写的小小demo:官方文档:https://docs.oracle.com/cd/E11882_01/

后台数据库取值 轮播图

<div> <div id="myCarousel" class="carousel slide"> <!-- 轮播(Carousel)指标 --> <ol class="carousel-indicators" style="bottom: 0;"> <c:forEach items="${advertList}" var="advert&q

loadrunner从数据库中取值进行参数化

LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接数据库取值.一般在大型业务并发压力测试时,数据量肯定也都是非常大的,所以手动去编辑就不切实际了,这时用连接数据库的功能就方便了很多. 所需软件: mysql-connector-odbc-5.3.12-win32.msi 安装此软件时,如果提示: 需要先安装:vcredist_x86.exe. 以下以mysql数据库取值为例,进行操作步骤介绍及截图. 1.Parameter List对话框中点击Data Wizard按

lr参数化取值与连接数据库

TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的. 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据. 2.数据文件一定要以一个空行结束,否则,最后一行输入的数据不会被参数所使用. 3.一般我们用到的很多的都是使用数据文件来保存我们的参数.一般来说LR对于参数的个数是没有限制的,但是在那个Parameter List中显示的就只能显示100个.so当你看到显示在列表中的参数个数少于你的文件中保存的个数,不用紧张. 一.介绍LR参数化数

LoadRunner参数化取值与连接数据库

LoadRunner参数化取值与连接数据库 LoadRunner在使用参数化的时候,通常都是需要准备大数据量的,也因此LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接数据库取值.一般在大型业务并发压力测试时,数据量肯定也都是非常大的,所以手动去编辑当然就不切实际了,还好有连接数据库的功能,所以就方便了很多.不过提供连接数据库的功能到不是为了方便去取数据,而更重要的应该是借用数据库的造数据功能,通过简单的sql语句,便可以完成大量可复用的数据,这就是数据库的强大之处.