Locust效能測試4 引數關聯

2022-09-23 07:47:00 字數 1713 閱讀 8603

前面【locust效能測試2-先登入場景案例】講了登入的案例,這種是直接傳賬號和密碼就能登入了,有些登入的**會複雜一點,

需要先從頁面上動態獲取引數,作為登入介面的請求引數,如【學信網:的登入介面請求引數

需要先發個get請求,從返回的html頁面中解析出需要的資料

找回使用者名稱

找回密碼

註冊

前面用篇專門講了requests實現介面的引數關聯案例,這裡直接轉化成locust指令碼就行了

# coding:utf-8

from locust import httplocust, taskset, task

from lxml import etree

class logindemo(taskset):

'''使用者行為描述'''

def get_it_execution(self):

result = {}

h1 =

self.client.headers.update(h1)

r = self.client.get("/passport/login", verify=false)

# 從返回html頁面,解析出lt、execution

dom = etree.html(r.content.decode("utf-8"))

try:

result["lt"] = dom.xpath('//input[@name="lt"]')[0].get("value")

result["execution"] = dom.xpath('//input[@name="execution"]')[0].get("value")

print(result)

except:

print("lt、execution引數獲取失敗!")

return result

def login(self, user, psw):

result = self.get_it_execution()

loginurl = "/passport/login"

h2 =

body =

self.client.headers.update(h2)

print(self.client.headers)

r1 = self.client.post(loginurl, data=body, verify=false)

# print(r1.text)

@task(1)

def test_login(self):

# 測試資料

user = "13888888888"

psw = "111111"

self.login(user, psw)

class websituser(httplocust):

task_set = logindemo

host = ""

min_wait = 3000 # 單位毫秒

max_wait = 6000 # 單位毫秒

if __name__ == "__main__":

import os

os.system("locust -f locustfile3.py")