美文网首页
Python压力测试

Python压力测试

作者: Michael不想说话 | 来源:发表于2019-12-09 15:24 被阅读0次

安装progressbar

pip install progressbar2

使用多线程测试代码

import threading
import os
import requests
import random
import uuid
import json
import time
import csv
import shutil
from progressbar import *

class PostFile(threading.Thread):
    def __init__(self, tid, num, url, dir, output):
        super(PostFile, self).__init__()
        self.url = url
        self.tid = tid
        self.dir = dir
        self.num = num
        self.output = output
        self.receive_count = 0
        self.token_accept = 0
        self.file_list = os.listdir(self.dir)

    def send_post(self):
        token = uuid.uuid4().__str__()
        file_name = self.file_list[random.randint(0, len(self.file_list)-1)]
        file = {'file': (file_name, open(os.path.join(self.dir, file_name), 'rb'))}
        data = {'keepFile': 1, 'token': token}
        global global_count
        global_count += 1
        try:
            start = time.time()
            response = requests.post(self.url, files=file, data=data)
            end = time.time()
            response = json.loads(response.text)
            if response['token'] is not None:
                self.receive_count += 1
            if token == response['token']:
                self.token_accept += 1
            item = [token, response['token'], file_name, response['label'], end-start]
        except Exception as e:
            item = [token, '', file_name, '', 0]
        finally:
            return item


    def run(self):
        response = []
        thread_start = time.time()
        for i in range(self.num):
            item = self.send_post()
            response.append(item)
        thread_end = time.time()
        with open(os.path.join(self.output, "thread-[{}]-receive-[{}]-token-same-[{}]-cost-[{:.4f}].csv"
                .format(self.tid, self.receive_count, self.token_accept, thread_end-thread_start)),
                  'w', newline='') as t:
            writer = csv.writer(t)
            writer.writerows(response)


def build_worksapce(dir):
    dir = os.path.abspath(dir)
    if os.path.exists(dir):
        shutil.rmtree(dir)
    os.mkdir(dir)

if __name__ == '__main__':
    send_num = 100000
    thread_num = 100
    url = 'post_url'
    dir = './post_file_dir'
    output = './log_dir'
    global_count = 0
    build_worksapce(output)
    widgets = ['Progress: ', Percentage(), ' ', Bar('#'), ' ', Timer(), ' ', ETA(), ' ']
    pbar = ProgressBar(widgets=widgets, maxval=send_num).start()
    start = time.time()
    for i in range(thread_num):
        post = PostFile(tid=i, num=send_num//thread_num, url=url, dir=dir, output=output)
        post.start()

    while global_count != send_num:
        pbar.update(global_count+1)

    end = time.time()
    print('\nSend: {}, used: {:.4f} s.'.format(send_num, end-start))

相关文章

  • Python压力测试

    安装progressbar 使用多线程测试代码

  • 需要掌握的知识

    编程,python和java 测试能力:测试方法,测试思路,测试流程等 自动化能力:接口测试,性能测试,压力测试,...

  • 网站压力测试工具

    使用PYLOT进行压力测试 一、pylot是什么? 一个基于python的简单易用,跨平台的开源网站压力测试工具,...

  • 面试笔记20180820

    YG保险 1,登陆界面写测试用例; 2,接口测试工具jmeter/postman,压力测试; 3,python基础...

  • 一句命令将Python变为简易文件服务器

    周末临走时,突然被要求做一个压力测试,并需要能远程在家看到压力测试录下的视频。 这里想到了,Python自带的ht...

  • Python ddos脚本/压力测试

    内容转载自网络,请勿危害网络,仅供学习使用。

  • 测试工具汇总-持续更新

    V1.0 接口测试 发包工具 mock 接口自动化平台 数据库测试 客户端 Python库 压力测试工具 sql注...

  • zookeeper-测试

    python脚本测试 压测 1.运行一个zk的压力测试容器 2.编辑配置文件 3.运行测试工具 robot脚本

  • Locust性能测试

    一、Locust简介 Locust是使用Python开发的支持分布式的一款开源压力测试工具,Locust在测试时,...

  • locust 性能测试

    locust简介 Locust是使用Python开发的支持分布式的一款开源压力测试工具,Locust在测试时,会产...

网友评论

      本文标题:Python压力测试

      本文链接:https://www.haomeiwen.com/subject/vunbgctx.html