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

最新文章

  1. 【SQLServer】“无法对数据库’XXX’ 执行删除,因为它正用于复制”的解决方法
  2. AIX 文件 打包 与 压缩 tar gzip compress 的使用
  3. 简易的IOS位置定位服务
  4. Call to undefined function mysql_connnect()
  5. Netty 入门示例
  6. [LintCode] Shape Factory 形状工厂
  7. Android中view动画
  8. MapReduce分析明星微博数据
  9. lamda表达式学习
  10. Jenkins: 执行 PowerShell 命令
  11. jupyter notebooks 中键盘快捷键
  12. KNN算法 - 数据挖掘算法(3)
  13. 调整innodb redo log files数目和大小的具体方法和步骤
  14. C语言Socket-单工通信(客户端向服务器发送数据)
  15. LaTeX字体设置
  16. NewStyleClass学习笔记[一]
  17. C++ sort函数用法 C中的qsort
  18. macbook基本配置
  19. java 字节流文件复制方法总结
  20. 了解C#文件操作

热门文章

  1. HttpClient使用详解与实战一:普通的GET和POST请求
  2. 软工作业 wc-java
  3. Ubuntu 系统装机指南
  4. php exec执行视频图片转换
  5. angular官网实例(综合)
  6. Node.js GET/POST对应的url/query-string常用的方法介绍
  7. SpringCloud2.0 Ribbon 服务发现 基础教程(四)
  8. java代码转python代码
  9. db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码
  10. 在命令行中执行kms命令激活Microsoft Office 2010