本文主要講解利用TaskSet類對測試場景進行管理。特別是當要歸入測試範圍的功能點愈來愈多時,更須要考慮測試管理相關的內容。讓性能測試更有條理和高效。
以以下官方例子來說解TaskSet的用法以及在測試運行中的一些細節。
ide
from locust import User, TaskSet, between,task,constant class ForumSection(TaskSet): wait_time = constant(1) @task(10) def view_thread(self): print("This is task viewThread") @task(1) def create_thread(self): print("This is task create thread") @task(1) def stop(self): self.interrupt() class LoggedInUser(User): wait_time = between(5,10) tasks = {ForumSection:2} @task def index_page(self): print("this is a index page.")
如上,類ForumSection繼承了TaskSet類,其中定義了3個task,1,2是比較常規的task, 其中view_thread的權重是10,create_thread的權重是1;此外有一個比較特殊的task-> "stop",這個任務的權重是1,若是任務線程選中了此方法,那麼會結束該線程在此任務集合(TaskSet)的執行,回退到其父節點(父TaskSet)。性能
綜合來看,這裏總結下使用這種模式管理性能測試的一些要點。測試
-
自定義TaskSet子類必需要繼承TaskSet類this
-
若是TaskSet類設置了測試運行時參數,好比wait_time,那麼以TaskSet類設置爲準,若是TaskSet類中沒有設置參數,那麼會沿用User類中的設置。線程
-
若是某個線程(用戶) 執行了TaskSet類中的stop任務,那麼該線程會跳回父節點,在此例中,是跳回到LoggedInUser這個用戶類中,那麼下一步,該線程有可能執行任務「index_page」,也有可能執行任務「ForumSection」。以此類推。code
- 在TaskSet類執行任務時,是以該TaskSet類內的全部符合條件的任務爲範圍,此TaskSet類以外的任務,不在權重的計算範圍內。
另,本人在51CTO 學院有locust的基礎課程 https://edu.51cto.com/sd/ddd95 ,若有須要請查看。繼承