zoukankan      html  css  js  c++  java
  • httpRunner-接口测试开源框架学习

    简介

    HttpRunner是一款面向HTTP(S)协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

    安装

    pip install httprunner

    安装成功后使用命令查看版本

    hrun -V
    httprunner -V

     常用文件

    YAML/JSON(必须)
    测试用例文件,存储接口测试相关信息
    debugtalk.py(可选):
    1.存储项目中逻辑运算辅助函数
    2.该文件存在时,将作为项目根目录定位标记,其所在目录即被视
    为项目工程根目录
    3.该文件不存在时,运行测试的所在路径(CWD)将被视为项目工
    程根目录 
     
    .env(可选):
    存储项目环境变量,通常用于存储项目敏感信息
    .csv(可选)
    项目数据文件,用于进行数据驱动
    reports
    默认生成测试报告的存储文件夹

    YAML编写注意

    基本句法:

    1.1key:(空格)value:表示一对键值对(空格必须有);
    1.2以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的;
    1.3属性和值大小写敏感;
    备注:一定不要写tab
    1.4 # 为注释
    举例:
    - config:
        name: "验证能否打开主网页"
        base_url: "http://www.hnxmxit.com"
    
    # 测试步骤
    - test:
        name: "open hnxmxit mainpage api"
        request:
          url: "/"
          method: GET
        validate:
          - eq: ["status_code",200]
    View Code

    用例的基本结构

    • 每个 YAML/JSON 文件对应一个测试用例(testcase)
    • 每个测试用例为一个list of dict结构,其中可能包含全局配置项(config)和若干个测试步骤(test) 
    • config 为全局配置项,作用域为整个测试用例 
    • test 对应单个测试步骤,作用域仅限于本身

    示例:

    # 全局配置项
    - config:
        name: "验证能否打开主网页"
        base_url: "http://www.hnxmxit.com"
    
    # 测试步骤
    - test:
        name: "open hnxmxit mainpage api"
        request:
          url: "/"
          method: GET
        validate:
          - eq: ["status_code",200]
    View Code

    模拟各种请求示例

    get请求:

    # 全局配置项
    - config:
        name: "验证能否打开主网页"
        base_url: "http://www.hnxmxit.com"
    
    # 测试步骤
    - test:
        name: "open hnxmxit mainpage api"
        request:
          url: "/"
          method: GET
        validate:
          - eq: ["status_code",200]
    View Code

    带参数的get请求:

    # 模拟带参数的GET请求
    - config:
        name: 验证能否获取token值
        base_url: https://api.weixin.qq.com
    
    - test:
        name: get access_token
        request:
          url: /cgi-bin/token
          method: GET
          params:
            grant_type: client_credential
            appid: wxec83eaada223a9c8
            secret: 1867d7f1cabb3bafae0b7304e8251a09
        validate:
          - eq: ["status_code",200]
          - eq: [content.expires_in, 7200]
    View Code

    模拟请求头:

    # 模拟请求头
    - config:
        name: "验证百度搜索是否正确"
        base_url: "https://www.baidu.com"
    
    - test:
        name: "百度搜索请求"
        request:
          url: "/s"
          method: GET
          params:
            wd: "amazing"
          headers:
            User-Agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
            Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
            Accept-Encoding: "gzip, deflate, br"
            Accept-Language: "zh-CN,zh;q=0.9"
        validate:
          - eq: ["status_code",200]
    View Code

    模拟post请求:

    # post请求
    - config:
        name: "验证修改标签"
        base_url: "https://api.weixin.qq.com"
    
    - test:
        name: "修改标签接口"
        request:
          url: "/cgi-bin/tags/update"
          method: POST
          headers:
            Content_Type: "application/json"
          params:
            access_token: "34_Q6hFvzVz_UAzYulDe3JxkqP8sLxFQygB5t1HZhpzN3Kxak-Ztdy7jB77rnYbEV8H9qIxKLHvhZxxthR9ADkohmhZfJpO8Wv2kkgLXF7KNQjHwDqh-A4VsOyS-mtbAuIAHfVeUvUZKw3QdZEKFAYdAJAVQO"
          json: { "tag" : {"id" : 134, "name" : "天下无贼"   } }
        validate:
          - eq: ["status_code",200]
          - eq: [content.errcode,0]
    View Code

    变量使用:

    # 变量使用
    - config:
        name: 验证能否获取token值
        base_url: https://api.weixin.qq.com
    #    variables:
    #      - appid: wxec83eaada223a9c8
    #      - secret: 1867d7f1cabb3bafae0b7304e8251a09
    
    - test:
        name: get access_token
        variables:
          - appid: wxec83eaada223a9c8
          - secret: 1867d7f1cabb3bafae0b7304e8251a09
        request:
          url: /cgi-bin/token
          method: GET
          params:
            grant_type: client_credential
            appid: $appid
            secret: $secret
        validate:
          - eq: ["status_code",200]
          - eq: [content.expires_in, 7200]
    View Code

     执行命令

    打开CMD终端输入

    # hrun 路径/文件名.yml
    hrun .	estcases	est_hava_variables_requests.yml

     测试用例结构

    对于单个YAML/JSON文件来说,数据存储结构为list of dict 的形式,其中可能包含一个全局配置项(config)和若干个测试用例步骤(test).

    对应的YAML格式:

    - config:
        ....
    - test:
        ....
    - test:
        ....
    - test:
        ....
    View Code

    变量空间作用域

    在测试用例内部,HttpRunner划分了两层变量空间作用域(context)

    config:作为整个测试用例的全局配置项,作用域为整个测试用例;

    test:测试步骤的变量空间(context)会继承或覆盖config中定义的内容; 

  • 相关阅读:
    目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
    课程不懂的问题
    自我介绍
    .net发送邮件代码示例
    清除HTML中的特殊字符
    Html特殊字符转义处理
    截取字符窜(区分中英文)
    截取需要的字符串(非字节处理)
    区分24小时和12小时的时间格式转换为
    时间戳转为时间
  • 原文地址:https://www.cnblogs.com/ClownAlin/p/13114250.html
Copyright © 2011-2022 走看看