• 自己上手写性能工具(三)


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

    我又来更新第三篇了,因为我又改进了一些功能。

    显示性能测试进度

    前些天逛github发现了tqdm,他可以动态显示程序的执行进度。根据前面开发的功能,在运行性能时,如果并发用户和请求数很大,那么终端就处于执行状态,不会有任何信息输出,直到运行结果,结果才被打印出来。

    > 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 ===================
    

    这个体验非常糟糕。加入tqdm,体验就好很多了。

    tqdm的用法超级简单,看一个简单的例子:

    from time import sleep
    from tqdm import trange
    
    for i in trange(10):
        sleep(0.5)
    

    在终端运行上面的程序,动态显示执行进度。

    > python demo.py
    100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:05<00:00,  2.00it/s]
    

    生成 kb 命令

    上一篇借助 click 来给python文件执行时接收参数

    > python3 kb.py https://wwww.baidu.com -u 10 -q 10
    

    这样很不专业,也不够方便。 ab 是这样执行:

    > ab -c 10 -n 100 https://wwww.baidu.com
    

    那么,能不能把kb.py 变成一个命令,一次安装,到处执行,并且去掉前面的 python

    很简单,只需要使用python的argparse 模块即可。

    import argparse
    
    def main():
        """
        API test: parse command line options and run commands.
        """
    
        parser = argparse.ArgumentParser(description=__description__)
    
        parser.add_argument(
            '-v', '--version', dest='version', action='store_true',
            help="show version")
    
        args = parser.parse_args()
    
        if args.version:
            print("kb {}".format(__version__))
            sys.exit(0)
    
        return 0
    
    
    def console_main():
        main()
        return 0
    

    配合 setup.py 安装文件,就可以生成 命令工具了。

    # setup.py 
    
    entry_points='''
        [console_scripts]
        kb=kb.run:console_main
    '''
    

    执行setup.py 命令安装

    python setup.py install
    

    在 python安装目录下生成 kb 命令工具.

    最新kb使用

    • install
    > git clone https://github.com/SeldomQA/kb
    > cd kb
    > python3 setup.py install
    
    • 使用

    查看帮助:

    > kb --help
    usage: kb [-h] [-v] [-u USERS] [-q REQUESTS] [url]
    
    kb is a simple performance testing tool, Simulate concurrent requests through
    a coroutine.
    
    positional arguments:
      url                   URL to hit
    
    optional arguments:
      -h, --help            show this help message and exit
      -v, --version         show version
      -u USERS, --users USERS
                            Number of concurrent users
      -q REQUESTS, --requests REQUESTS
                            Number of requests
    
    • 运行

    通过kb命令实现URL并发请求

    > kb https://www.baidu.com -u 5 -q 20
    URL: https://www.baidu.com
    users: 5, requests: 20
    ============== Running ===================
    100%|████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<?, ?it/s]
    100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.45it/s]
    100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.41it/s]
    100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.31it/s]
    100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.20it/s]
    100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.14it/s]
    
    ============== Results ===================
    Max:       0.2601 s
    Min:       0.054 s
    Average:   0.0968 s
    pass:  100
    fail:  0
    total: 100
    ================== end ===================
    
  • 相关阅读:
    第四次作业--项目选题报告(团队)
    第三次作业--团队展示(团队)
    第二次作业——个人项目实战
    2017软件工程实践
    Unity3D游戏开发——显示物品的仓库UI
    Unity3D游戏开发——物品存储:List与Dictionary
    Unity3D游戏开发——编程实现游戏管理器
    Unity3D游戏开发——访问集中式共享模块的设计模式
    Unity3D游戏开发——收集当前关卡游戏中分散的物件
    福州大学软工1816 K 班助教总结
  • 原文地址:https://www.cnblogs.com/fnng/p/14419630.html
Copyright © 2020-2023  润新知