在虚拟模拟的时候,可能对等待时间有更高的要求,比如假如有这么一个场景要求:某任务要求每被执行1次,那么下次的等待时间就➕1秒钟。这种情况,是可以实现的,这也就体现了Locust的灵活性。可编程性,很多比较棘手的场景模拟难题,都可以通过编程的方式解决掉。
具体如何解决呢?自定义wait_time函数,实现源代码如下:
def wait_time(self): self.last_wait_time += 1 return self.last_wait_time
通过以上,每次执行task的时候 wait_time的源码都会被执行1次,那么我们的场景模拟的目的就达到了。完整的locust file源码如下:
from locust import User,task import time class MyUser(User): last_wait_time = 0 #可以自定义wait time for locust def wait_time(self): self.last_wait_time += 1 return self.last_wait_time @task def my_task(self): nowTime = time.strftime("%Y-%m-%d %H:%M:%S") print("Executing my task,and the time now is:" + nowTime)
通过简单分析,如果场景模拟是正确的,那么每次打印的时间差别,应该是1/2/3/4...... 秒,这么递增的,执行完之后,如下所示,是和预想是一致的。
/locust.runners: All users hatched: MyUser: 1 (0 already running) Executing my task,and the time now is:2020-09-20 20:21:52 Executing my task,and the time now is:2020-09-20 20:21:53 Executing my task,and the time now is:2020-09-20 20:21:55 Executing my task,and the time now is:2020-09-20 20:21:58
大家也可以扫描并关注如下公众号“TimTest”,会有更多性能测试相关内容分享。