httprunner2記錄源碼——持續(xù)更新

一、目錄結(jié)構(gòu):

image.png

二但狭、看代碼

2.1披诗、先看./____main___.py

image.png

2.2撬即、打開(kāi)./cli,查看main()

image.png

可以看到命令行的參數(shù):

'-V', '--version'
testfile_paths *
--log-level *
--log-file *
--dot-env-path :.env文件的目錄
--report-template *
--report-dir *
--report-file *
--save-tests *
--failfast *
--startproject *
--validate *
--prettify *

--prettify:美化json文件

說(shuō)明:

cli.py的main()中的if args.prettify——>utils.py中的prettify_json_file(file_list)


image.png

image.png

image.png

--prettify測(cè)試:


image.png

--validate:檢測(cè)json或yml格式

說(shuō)明:

cli.py的main()中的if args.validate中的load_cases(validate_path, args.dot_env_path)——>./loader/schemas/buildup.py中的def load_cases(path, dot_env_path=None)呈队,這個(gè)方法主要是床兩個(gè)參數(shù)剥槐,一個(gè)是檢測(cè)的目錄或文件路徑,另一個(gè)參數(shù)是.env文件路徑宪摧,默認(rèn)None粒竖,這個(gè)方法返回值是個(gè)dict里面是檢測(cè)目錄或文件的信息以及.env文件(若傳.env路徑的話(huà))的信息


image.png

image.png

檢查的具體方法是根據(jù)def load_cases(path, dot_env_path=None)的返回值,若正常格式則返回dict几于,其他則異常
load_cases函數(shù)返回值格式:
普通文件:


image.png

.env文件:
image.png

--startproject:生成一個(gè)項(xiàng)目

說(shuō)明:

cli.py的main()中的project_name = args.startproject——>utils.py中的create_scaffold(project_name)蕊苗,執(zhí)行這個(gè)命令會(huì)生成一個(gè)指定名稱(chēng)的項(xiàng)目

    project_name = args.startproject
    if project_name:
        create_scaffold(project_name)
        sys.exit(0)

utils.py中create_scaffold(project_name)的實(shí)現(xiàn),主要生成了幾個(gè)默認(rèn)文件沿彭,創(chuàng)建了幾個(gè)文件


image.png

測(cè)試--startproject:


image.png

--failfast朽砰,--save_tests,--log_level喉刘,--log_file

這4個(gè)參數(shù)來(lái)實(shí)例化runner對(duì)象

    runner = HttpRunner(
        failfast=args.failfast,
        save_tests=args.save_tests,
        log_level=args.log_level,
        log_file=args.log_file
    )

查看HttpRunner類(lèi)(./api.py文件)瞧柔,可以看到實(shí)例化時(shí)其實(shí)是設(shè)置日志等級(jí),默認(rèn)INFO饱搏,及文件默認(rèn)None(使用./logger.py)非剃,并且調(diào)用了unittest中的TextTestRunner

HttpRunner的構(gòu)造方法如下:

    def __init__(self, failfast=False, save_tests=False, log_level="INFO", log_file=None):
        """ initialize HttpRunner.

        Args:
            failfast (bool): stop the test run on the first error or failure.
            save_tests (bool): save loaded/parsed tests to JSON file.
            log_level (str): logging level.
            log_file (str): log file path.

        """
        logger.setup_logger(log_level, log_file)

        self.exception_stage = "initialize HttpRunner()"
        kwargs = {
            "failfast": failfast,
            "resultclass": report.HtmlTestResult
        }
        self.unittest_runner = unittest.TextTestRunner(**kwargs) #后續(xù)研究unittest置逻,在這里了解一下大概作用
        self.test_loader = unittest.TestLoader() #后續(xù)研究unittest
        self.save_tests = save_tests
        self._summary = None
        self.project_working_directory = None

testfile_paths推沸、--report-template、--report-dir券坞、--report-file

這4個(gè)參數(shù)在運(yùn)行case或api文件時(shí)用上

        for path in args.testfile_paths:
            summary = runner.run(path, dot_env_path=args.dot_env_path)
            report_dir = args.report_dir or os.path.join(runner.project_working_directory, "reports")
            gen_html_report(
                summary,
                report_template=args.report_template,
                report_dir=report_dir,
                report_file=args.report_file
            )
            err_code |= (0 if summary and summary["success"] else 1)

循環(huán)傳入的testfile_paths鬓催,先用runner對(duì)象執(zhí)行def run(self, path_or_tests, dot_env_path=None, mapping=None),然后生成報(bào)告調(diào)用./report/html/gen_report.py中的def gen_html_report(summary, report_template=None, report_dir=None, report_file=None)函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恨锚,一起剝皮案震驚了整個(gè)濱河市宇驾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴伶,老刑警劉巖课舍,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異他挎,居然都是意外死亡筝尾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)办桨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)筹淫,“玉大人,你說(shuō)我怎么就攤上這事呢撞∷鸾” “怎么了饰剥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摧阅。 經(jīng)常有香客問(wèn)我汰蓉,道長(zhǎng),這世上最難降的妖魔是什么逸尖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任古沥,我火速辦了婚禮,結(jié)果婚禮上娇跟,老公的妹妹穿的比我還像新娘岩齿。我一直安慰自己,他們只是感情好苞俘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布盹沈。 她就那樣靜靜地躺著,像睡著了一般吃谣。 火紅的嫁衣襯著肌膚如雪乞封。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天岗憋,我揣著相機(jī)與錄音肃晚,去河邊找鬼。 笑死仔戈,一個(gè)胖子當(dāng)著我的面吹牛关串,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播监徘,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晋修,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了凰盔?” 一聲冷哼從身側(cè)響起墓卦,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎户敬,沒(méi)想到半個(gè)月后落剪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尿庐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年忠怖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁倔。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脑又,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情问麸,我是刑警寧澤往衷,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站严卖,受9級(jí)特大地震影響席舍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哮笆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一来颤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稠肘,春花似錦福铅、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至环揽,卻和暖如春略荡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歉胶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工汛兜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人通今。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓粥谬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衡创。 傳聞我的和親對(duì)象是個(gè)殘疾皇子帝嗡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 介紹 HttpRunner 是一款面向 HTTP(S) 協(xié)議的通用測(cè)試框架晶通,只需編寫(xiě)維護(hù)一份YAML/JSON腳本...
    yertao閱讀 7,501評(píng)論 0 3
  • HttpRunner 在命令行中啟動(dòng)測(cè)試時(shí)璃氢,通過(guò)指定參數(shù),可實(shí)現(xiàn)豐富的測(cè)試特性控制狮辽。hrun -husage: h...
    小娟_bb93閱讀 290評(píng)論 0 0
  • sorted()也是一個(gè)高階函數(shù)一也。用sorted()排序的關(guān)鍵在于實(shí)現(xiàn)一個(gè)映射函數(shù)。 函數(shù)作為返回值 高階函數(shù)除了...
    jbb_43b0閱讀 333評(píng)論 0 0
  • 模板標(biāo)簽除了幾個(gè)常用的喉脖,還真心沒(méi)有仔細(xì)了解一下椰苟,看到2.0發(fā)布后,翻譯學(xué)習(xí)一下树叽。 本文盡量忠實(shí)原著舆蝴,畢竟大神的東西...
    海明_fd17閱讀 1,998評(píng)論 0 5
  • httprunner3.x詳細(xì)教程六(httprunner的setup和teardown及hook) httpru...
    成都_阿木木閱讀 2,923評(píng)論 2 1