【发布时间】:2021-12-25 02:33:15
【问题描述】:
我是 Locust 和 Python 的新手。我已经使用 JMeter 好几年了,我正在尝试实现与我在那里用于处理登录失败的逻辑类似的逻辑。
我想运行一个简单的场景:登录、输入文件夹、注销
我遇到问题的地方是实现这个逻辑:
如果任何登录调用失败,我不想尝试进入文件夹(避免登录后级联失败),但我仍然想运行注销以确保没有活动会话。
我当前的 SequentialTaskSet 是这样的,它适用于执行子任务集:
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]
有没有办法在同一个 SequentialTaskSet 中将任务数组拆分为多个步骤?
- 始终登录
- 如果登录成功,进入文件夹
- 始终退出
【问题讨论】:
-
是否有任何理由无法使用登录、文件夹输入和注销功能创建一项任务?然后,您可以将您的登录名和 folder_enter 包装在一个 try-finally 中,而您的 finally 块正在注销
-
感谢您的建议,我明白这将如何运作。但是这些被保存为单独的脚本,因为我们希望每个事务在不同的场景中都是可重用的。比如这个场景有Login、Folder Enter、Logout的事务。另一种情况可能是登录、创建文件夹、删除文件夹、注销。所以我们想要一个只有登录的脚本,它可以被任何场景调用,同样用于注销等等,这样就不必跨多个脚本维护相同的调用
-
您仍然可以将它们作为单独的脚本保存,但将它们包装到一个任务中。我假设这是为了测试
-
当时我可能误解了最初的建议。只要可重用事务作为单独的脚本保存,我就可以以任何适用于给定逻辑的方式编写它。您是否有示例代码说明如何将它们包装到一项任务中?这会涉及在没有数组的情况下调用子任务集吗?