httprunner原始碼學習(一)從命令列引數入手

2022-09-18 19:33:08 字數 3598 閱讀 2403

首先給出專案原始碼:

我的版本是 3.1.6

在專案根目錄pyproject.toml檔案,可以看到命令的指向的路徑。

通過文件可知,httprunner run = hrun,httprunner make = hmake,httprunner har2case = har2case。所以我們先來研究httprunner命令。

先進到httprunner目錄下cli.py看一看。

if __name__ == "__main__":

main()

這裡跟明顯,我們執行 httprunner 的時候,實際執行的就是這個main()方法。

再去main方法看一看:

這裡引用了python的argparse模組:

這個模組不太熟,之前沒用過,現在來逐行解析:

"""parser = argparse.argumentparser(description=__description__) # 建立解析器物件

parser.add_argument(

"-v", "--version", dest="version", action="store_true", help="show version"

) # 新增引數 -v --version

subparsers = parser.add_subparsers(help="sub-command help") # 例項化action物件

# 執行自定義方法,將action物件傳入

sub_parser_run = init_parser_run(subparsers) # 新增子命令 "run"

sub_parser_scaffold = init_parser_scaffold(subparsers) # 新增子命令 "startproject"

sub_parser_har2case = init_har2case_parser(subparsers) # 新增子命令 "har2case"

sub_parser_make = init_make_parser(subparsers) # 新增子命令 "make"

if len(sys.ar**) == 1:

# 執行httprunner命令,後面沒有跟引數

parser.print_help() # 列印幫助資訊

sys.exit(0) # 終止程式

elif len(sys.ar**) == 2: # 執行httprunner命令,後面有1個引數

sys.exit(0) # 終止程式

elif ( # 執行httprunner命令,後面有2個引數 & 第1個引數是"run" & 第二個引數是 -h 、--help

pytest.main(["-h"]) # 輸出pytest自帶幫助資訊

sys.exit(0)

extra_args =

if len(sys.ar**) >= 2 and sys.ar**[1] in ["run", "locusts"]:

args, extra_args = parser.parse_known_args() # args: namespace; extra_args: run/locusts 後面跟的所有引數,list

else:

args = parser.parse_args()

if args.version:

print(f"")

sys.exit(0)

# 下面4個if語句,就是httprunner的實際呼叫了

def init_parser_run(subparsers): # 接收action物件型別的引數

sub_parser_run = subparsers.add_parser( # 新增子命令「run」

sub_parser_scaffold = subparsers.add_parser( # 新增子命令 「startproject」

"startproject", help="create a new project with template structure."

)sub_parser_scaffold.add_argument( # 新增引數子命令所需引數 "project_name"

"project_name", type=str, nargs="?", help="specify new project name."

)return sub_parser_scaffold

Httprunner初步學習

一 簡介 一直在技術部落格上看到httprunner測試框架,但始終不太明白這個框架的具體作用,今天就花點時間來初步學習了解一下。httprunner 是一款面向 http s 協議的通用測試框架,只需編寫維護乙份yaml json指令碼,即可實現自動化測試 效能測試 線上監控 持續整合等多種測試需...

原始碼學習 ArrayList的擴容原始碼分析

原始碼如下 下面是arraylist的擴容機制 arraylist的擴容機制提高了效能,如果每次只擴充乙個,那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量 param mincapac...

學習httprunner記錄02

使用測試指令碼完成檔案的自動上傳,以下指令碼是使用requests實現的 使用的環境 python3.6 pipenv 虛擬化環境 coding utf 8 import requests host h1 url host zentao user login.html body s requests...