自己上手寫性能工具(三)


自己上手寫性能測試工具(一)
自己上手寫性能測試工具(二)

我又來更新第三篇了,因為我又改進了一些功能。

顯示性能測試進度

前些天逛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 ===================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM