httprunner2记录源码——持续更新

一、目录结构:

image.png

二、看代码

2.1、先看./____main___.py

image.png

2.2、打开./cli,查看main()

image.png

可以看到命令行的参数:

'-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文件

说明:

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


image.png

image.png

image.png

--prettify测试:


image.png

--validate:检测json或yml格式

说明:

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),这个方法主要是床两个参数,一个是检测的目录或文件路径,另一个参数是.env文件路径,默认None,这个方法返回值是个dict里面是检测目录或文件的信息以及.env文件(若传.env路径的话)的信息


image.png

image.png

检查的具体方法是根据def load_cases(path, dot_env_path=None)的返回值,若正常格式则返回dict,其他则异常
load_cases函数返回值格式:
普通文件:


image.png

.env文件:
image.png

--startproject:生成一个项目

说明:

cli.py的main()中的project_name = args.startproject——>utils.py中的create_scaffold(project_name),执行这个命令会生成一个指定名称的项目

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

utils.py中create_scaffold(project_name)的实现,主要生成了几个默认文件,创建了几个文件


image.png

测试--startproject:


image.png

--failfast,--save_tests,--log_level,--log_file

这4个参数来实例化runner对象

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

查看HttpRunner类(./api.py文件),可以看到实例化时其实是设置日志等级,默认INFO,及文件默认None(使用./logger.py),并且调用了unittest中的TextTestRunner

HttpRunner的构造方法如下:

    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) #后续研究unittest,在这里了解一下大概作用
        self.test_loader = unittest.TestLoader() #后续研究unittest
        self.save_tests = save_tests
        self._summary = None
        self.project_working_directory = None

testfile_paths、--report-template、--report-dir、--report-file

这4个参数在运行case或api文件时用上

        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)

循环传入的testfile_paths,先用runner对象执行def run(self, path_or_tests, dot_env_path=None, mapping=None),然后生成报告调用./report/html/gen_report.py中的def gen_html_report(summary, report_template=None, report_dir=None, report_file=None)函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 介绍 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本...
    yertao阅读 7,506评论 0 3
  • HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制。hrun -husage: h...
    小娟_bb93阅读 292评论 0 0
  • sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。 函数作为返回值 高阶函数除了...
    jbb_43b0阅读 337评论 0 0
  • 模板标签除了几个常用的,还真心没有仔细了解一下,看到2.0发布后,翻译学习一下。 本文尽量忠实原著,毕竟大神的东西...
    海明_fd17阅读 2,000评论 0 5
  • httprunner3.x详细教程六(httprunner的setup和teardown及hook) httpru...
    成都_阿木木阅读 2,933评论 2 1