最近一直在研究这个locust实现登录,但是我发现基本上网上的自动化登录都是只有账号和密码登录,是没有验证码登录的。因为验证码每次不一样,目前我还不知道如果有验证码的登录是怎么做的。
使用账号+密码(加密)登录的方式:
一般很多登录请求的密码是加密的,常见的都是md5加密,至于是几层加密,这个可以问开发。因为有的是加密后再加密。
1、登录例子
保存为zhlh.py
说明:这里的登录密码需要加密,是md5加密。加密的方法在这边文章中写过《 Python进行MD5方式加密,编码、不编码》
特别强调:请求时,要查看Content-Type是怎么规定的。如果Content-Type:application/json:
from locust import HttpLocust, TaskSet, task
from locust.clients import HttpSession
import json
import hashlib #python md5加密方法
# Web性能测试
class UserBehavior(TaskSet):
@task
def login(self):
#密码加密
mima='91*****li'
Jpwd = hashlib.md5() #创建一个MD5对象
Jpwd.update(mima.encode('utf-8'))
Npwd = Jpwd.hexdigest()
# print (Npwd) #打印加密后的密码
self.head = {'Content-Type':'application/json', #这个类型说明服务端接收json格式的字符串
'Connection': 'keep-alive',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
}
self.form_data = {'signin_name':158******18, #如果这里不是数字,就用加引号。例如'signin_name':'lily'
'password':Npwd} #注意这里不需要给Npwd加引号
#post请求传json参数——第1种方法,传json参数,直接json=
response=self.client.post("/api/account/team/signin",headers = self.head,json= self.form_data) ##json参数直接自动转json了
#post请求传json参数——第2种方法,传data参数,需json.dumps转换成json格式 data=json.dumps()
#response=self.client.post("/api/account/team/signin",headers = self.head,data= json.dumps(self.form_data))
print("Response status code:", response.status_code)
class User(HttpLocust):
task_set = UserBehavior
min_wait = 1000
max_wait = 3000
host="https://zhlh.xxxxxx.com"
2、运行。先启动文件。然后打开地址。
指定压力用户数和用户产生的速度。地址:http://localhost:8089/
3、运行结果。开始加压后,就可以看到网页API的响应成功,响应时间,和请求速率等性能参数了。
补充说明:Content-Type:application/x-www-form-urlencoded时,参数用data
post请求参数
思考:
这里是一个用户账号密码,然后实现压力测试,之前我想着这样是不是不算压力测试呢?
但是换种想法这个就是很多人用同一账号登录。也算压力。
相关文章: