Locust/Python:在 SequentialTask​​Set 中使用 if 条件拆分任务数组

Locust/Python: Splitting a tasks array with if conditions in a SequentialTaskSet

我是 Locust 的新手,一般来说 Python。我已经使用 JMeter 好几年了,我正在尝试实现与我在那里用于处理登录失败的逻辑类似的逻辑。

我想运行一个简单的场景:登录,进入文件夹,注销

我遇到问题的地方是实现这个逻辑:

如果任何登录调用失败,我不想尝试进入文件夹(避免登录后的级联失败),但我仍然想运行注销以确保没有活动会话。

我当前的 SequentialTask​​Set 是这样读的,它用于执行子任务集:

class folder_enter_scalability_taskset(SequentialTaskSet):

    def on_start(self):
        self.tm = TransactionManager()

    @task
    def seedata_config(self):
        seeddata = next(seeddata_reader)
        self.client.username = seeddata['username']
        self.client.password = seeddata['password']

    tasks = [login_taskset, folder_enter_taskset, logout_taskset]

有没有办法在同一个 SequentialTask​​Set 中将任务数组拆分为多个步骤?

  1. 始终登录
  2. 如果登录成功,进入文件夹
  3. 始终注销

感谢 phil 在评论中为我指明了正确的方向,我现在有了一个使用 try-finally 和 if-else 而不是任务数组的工作代码。希望这可以帮助其他人:

class folder_enter_scalability_taskset(SequentialTaskSet):
    def on_start(self):
        self.tm = TransactionManager()

    @task
    def seedata_config(self):
        seeddata = next(seeddata_reader)
        self.client.username = seeddata['username']
        self.client.password = seeddata['password']
        self.client.userrole = seeddata['userrole']

    @task
    def folder_enter_scalability(self):
        try:
            login_taskset.login(self)
            if self.client.loginFail is False:
                folder_enter_taskset.folder_enter(self)
            else:
                logging.error("Login failed, skipping to logout")
        finally:
            logout_taskset.logout(self)

如果我将它置于 try-else-finally 条件下,我无法让它跳过文件夹输入,所以我在登录任务集中添加了这个 self.client.loginFail 以支持 if-其他尝试。

它以 'False' 的形式启动,并在任务集失败的情况下翻转为 'True'。