亲宝软件园·资讯

展开

自己上手写性能测试工具(二)

糖不苦- 人气:0
依赖库 requests==2.22.0 gevent==20.9.0 numpy==1.19.2 click==7.1.2 click 库 今天的主角是click库。 中文文档:https://www.osgeo.cn/click/index.html 第一个例子(hello.py): import click @click.command() @click.argument('name') @click.option('-c', default=1, help='number of greetings') def hello(name, c): for x in range(c): click.echo('Hello %s!' % name) if __name__ == "__main__": hello() 查看帮助: > python3 hello.py --help Usage: hello.py [OPTIONS] NAME Options: -c INTEGER number of greetings --help Show this message and exit. 使用: > python3 hello.py 虫师 -c 3 Hello 虫师! Hello 虫师! Hello 虫师! 现在已经掌握了click 的基本用法。 实现命令行性能测试工具 接下来,将click引入到kb.py性能测试脚本中。 from __future__ import print_function import gevent from gevent import monkey monkey.patch_all() import time import click import requests from numpy import mean class statistical: pass_number = 0 fail_number = 0 run_time_list = [] def running(url, numbers): for _ in range(numbers): start_time = time.time() r = requests.get(url) if r.status_code == 200: statistical.pass_number = statistical.pass_number + 1 print(".", end="") else: statistical.fail_number = statistical.fail_number + 1 print("F", end="") end_time = time.time() run_time = round(end_time - start_time, 4) statistical.run_time_list.append(run_time) @click.command() @click.argument('url') @click.option('-u', default=1, help='运行用户的数量,默认 1', type=int) @click.option('-q', default=1, help='单个用户请求数,默认 1', type=int) def main(url, u, q): print("请求URL: {url}".format(url=url)) print("用户数:{},循环次数: {}".format(u, q)) print("============== Running ===================") jobs = [gevent.spawn(running, url, q) for _url in range(u)] gevent.wait(jobs) print("\n============== Results ===================") print("最大: {} s".format(str(max(statistical.run_time_list)))) print("最小: {} s".format(str(min(statistical.run_time_list)))) print("平均: {} s".format(str(round(mean(statistical.run_time_list), 4)))) print("请求成功", statistical.pass_number) print("请求失败", statistical.fail_number) print("============== end ===================") if __name__ == "__main__": main() 查看帮助: python3 kb.py --help Usage: kb.py [OPTIONS] URL Options: -u INTEGER 运行用户的数量,默认 1 -q INTEGER 单个用户请求数,默认 1 --help Show this message and exit. 使用方法: > python3 kb.py https://wwww.baidu.com -u 10 -q 10 请求URL: https://wwww.baidu.com 用户数:10,循环次数: 10 ============== Running =================== .................................................................................................... ============== Results =================== 最大: 0.955 s 最小: 0.2573 s 平均: 0.4585 s 请求成功 100 请求失败 0 ============== end =================== 本篇作者:虫师 博客出处:https://i.cnblogs.com/posts/edit

加载全部内容

相关教程
猜你喜欢
用户评论