Locust性能-零基礎入門系列(7)

本文主要講解利用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 ,若有須要請查看。繼承

相關文章
相關標籤/搜索