使用Python压测接口

Python接口压测

对Http接口进行压力测试,作为一个码农,我十分喜欢自己写脚本来压测接口,这是我之前写的用来压测http接口的python脚本,用了一个生产者消费者模式,和一个并发队列,用生产者方法来攒接口参数压入并发队列,消费者从队列中取数据执行调用接口,可以准确的记录调取接口的次数,还是比较有用的。

源码下载链接

https://github.com/Dahlin/HTTPInterfaceTest

脚本源代码

脚本里都有注释,挺简单的,我直接上源码了,其实就是对python线程池的一个简单的应用。

from concurrent.futures import ThreadPoolExecutor
import time
from queue import Queue
from HTTPInterfaceTest import HTTPInterfaceTest
import uuid

test_queue = Queue(maxsize=100000)


def create_test(publickey, key, usernames, param, url, timeout=1000):
    """
    生产者创建测试对象
    :param publickey:
    :param key:
    :param usernames:
    :param param:
    :param url:
    :param timeout:
    :return:
    """
    ti = HTTPInterfaceTest(publickey=publickey,
                           key=key,
                           usernames=usernames,
                           param=param,
                           url=url,
                           timeout=timeout)
    test_queue.put(ti)


def call_test(q):
    """
    调取测试接口
    :param q:
    :return:
    """
    while not q.empty():
        ti = q.get()
        ti.test_http('json')


def exec_pressuretest(index, pcount, ccount):
    """
    压力测试  调取总次数 = index*pcount
    :param index:
    :param pcount:
    :return:
    """
    for i in range(0, index):
        with ThreadPoolExecutor(pcount) as Producer:
            for p in range(pcount):
                base_url = 'http://192.168.127.131/'
                publickey = '123456789'
                key = 'A123B456C789D123'
                usernames = ['Jike', 'Jone', 'Ada']
                param = uuid.uuid1()
                Producer.submit(create_test, publickey, key, usernames, param, base_url)
                print(str(p)+' -> '+str(param))
        Producer.shutdown()

        with ThreadPoolExecutor(ccount) as Consumer:
            for c in range(ccount):
                Consumer.submit(call_test, test_queue)
        Consumer.shutdown()


if __name__ == '__main__':
    exec_pressuretest(100, 500, 400)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值