我是蝗蟲的新手,正在嘗試編寫負載測試。我的 Locust 用戶的目的是通過調用 createItem API 來創建項目。在這種情況下,每個請求中的 item_id 應該是唯一的,因為它具有唯一的條件。這就是我所做的。import jsonfrom random import randintfrom locust import HttpUser, constant, SequentialTaskSet, taskfrom flow.helper import read_jsonclass WebsiteUser(HttpUser): """ User class that does requests to the locust web server running on localhost """ host = "http://localhost:8080/api/" wait_time = constant(3) @task class SequenceOfTasks(SequentialTaskSet): item_id = randint(100, 9999) @task def create_item(self): request = read_json('resources/create_item.json') request['item-id'] = self.item_id response = self.client.post('createItem', json.dumps(request), headers={'Content-Type': 'application/json'}) assert response.status_code == 200第一個請求是成功的,它成功地創建了一個條目。但是所有后來的請求都失敗了,在應用程序服務器的日志中我可以看到它正在嘗試創建具有相同 item_id 的項目。有什么方法可以在 WebsiteUser 類中動態生成一個值并將其傳遞給 SequenceOfTasks?
1 回答

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
不是問題的確切答案,但我通過在方法內移動隨機邏輯使這段代碼在沒有沖突的 item_ids 的情況下工作。就像是:-
@task
class SequenceOfTasks(SequentialTaskSet):
self.item_id = None
@task
def create_item(self):
request = read_json('resources/create_item.json')
self.item_id = randint(100, 9999)
request['item-id'] = self.item_id
...
添加回答
舉報
0/150
提交
取消