背景

前几天看过花菜大佬分享的一个帖子 Python 操作 Jmeter 探索:pymeter 实操指南
然后去看了 pymeter 这个库,结合目前的引擎,简单的改造下做个 demo

demo 如下

结合主流的 unittest 框架与 pymeter 做了一键压测的功能,页面参考了 apipost 的桌面端简单的做了这个 demo。(引擎的话之前一直用的 unittest,所以结合 type 动态生成测试类,重写步骤函数)

def perform(self, data):
    """一键压测扩展"""
    router = data.get('interface').get('url')
    threads = data.get('threads', 1)
    iterations = data.get('iterations', 1)
    http_sampler = HttpSampler(
        "Demo",
        router,
    )
    tg = ThreadGroupSimple(
        threads, iterations, http_sampler,
    )
    tp = TestPlan(tg)
    stats = tp.run()
    response = {
        "duration": stats.duration_milliseconds,
        "mean": stats.sample_time_mean_milliseconds,
        "min": stats.sample_time_min_milliseconds,
        "median": stats.sample_time_median_milliseconds,
        "90p": stats.sample_time_90_percentile_milliseconds,
        "95p": stats.sample_time_95_percentile_milliseconds,
        "99p": stats.sample_time_99_percentile_milliseconds,
        "max": stats.sample_time_max_milliseconds
    }
    self.__unittest_perform_response = response

改造后的 runApi 结果返回结果如下

最终效果如下

纯属娱乐勿喷!哈哈哈!代码目前存在问题不用参考谢谢!demo 而已


↙↙↙阅读原文可查看相关链接,并与作者交流