美文网首页软件测试
HttpRunner+yaml+Python

HttpRunner+yaml+Python

作者: 6ada42df4c4a | 来源:发表于2020-03-27 16:25 被阅读0次

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试

    录制生成测试用例

    为了简化测试用例的编写工作,HttpRunner 实现了测试用例生成的功能。
    首先,需要将抓包工具抓取得到的数据包导出为 HAR 格式的文件,假设导出的文件名称为 demo-quickstart.har
    然后,在命令行终端中运行如下命令,即可将 demo-quickstart.har 转换为 HttpRunner 的测试用例文件。

    $ har2case docs/data/demo-quickstart.har -2y
    INFO:root:Start to generate testcase.
    INFO:root:dump testcase to YAML format.
    INFO:root:Generate YAML testcase successfully: docs/data/demo-quickstart.yml
    

    在项目中是不会通过录制来生成测试用例的,下面就来看看在项目中HttpRunner架构是如何使用的

    项目文件组织

    在 HttpRunner 自动化测试项目中,主要存在如下几类文件:

    • YAML/JSON:测试用例文件,以及接口定义文件
    • debugtalk.py:存储项目中项目中所需的一些公用方法,并且该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录
      该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
    • .env:存储项目环境变量
    • .csv:项目数据文件,用于进行数据驱动
    • reports:默认生成测试报告的存储文件夹

    测试用例组织

    HttpRunner 的测试用例支持两种文件格式:YAML 和 JSON。
    JSON 和 YAML 格式的测试用例完全等价,包含的信息内容也完全相同。
    我们项目中选择的是YAML格式,以下都以YAML为例


    image.png

    在 HttpRunner 中,测试用例组织主要基于三个概念:

    • 测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件
    • 测试用例(testcase):对应一个 YAML/JSON 文件,包含单个或多个测试步骤
    • 测试步骤(teststep):对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等

    测试用例如何实现?

    HttpRuner采用了测试用例分层模型

    概括来说,测试用例分层机制的核心是将接口定义、测试步骤、测试用例、测试场景进行分离,单独进行描述和维护,从而尽可能地减少自动化测试用例的维护成本。


    image.png
    先定义接口

    先定义接口,每个文件对应一个接口描述,接口定义描述的主要内容包括:name、variables、request、base_url、validate 等,形式如下:

    name: get headers
    base_url: http://httpbin.org
    variables:
        expected_status_code: 200
    request:
        url: /headers
        method: GET
    validate:
        - eq: ["status_code", $expected_status_code]
        - eq: [content.headers.Host, "httpbin.org"]
    
    其次再写testcase

    引用接口定义写testcase,有了接口的定义描述后,我们编写测试场景时就可以直接引用接口定义了。

    一般testcase 包含如下内容:

    - config:
        name: _demo_test
        variables:
            sg_name: sgroup_test
            sg_title: sg_test
        setup_hooks:
            - ${cleanup_sg($sg_name)}
    - test:
        name: "demo test case description"
        api: api/demo_api.yml
        variables:
            api_ag_name: $sg_name
            api_ag_title: $sg_title
            api_ag_desc: $sg_desc
            api_ag_owner: $sg_owner
        extract:
            - sg_id_1: json.data.demo_api.id
        validate:
            - "eq": ["status_code", 200]
            - "response_errors": ["json", False]
            - "eq": ["json.data.demo_api.desc", $sg_desc]
    

    执行测试用例

    hrun testcases\demo_test.yml

    执行结果

    image.png

    相关文章

      网友评论

        本文标题:HttpRunner+yaml+Python

        本文链接:https://www.haomeiwen.com/subject/vwsluhtx.html