首先給出專案原始碼:
我的版本是 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...