精华内容
下载资源
问答
  • httprunner

    2018-08-06 10:30:28
    httprunner框架介绍,详细阐述了如何设计自动化,执行自动化
  • HttpRunner

    2020-02-05 12:42:38
    简介 HttpRunner时一款面向HTTP(s)协议的通用测试框架,只需要编写...项目地址:https://github.com/HttpRunner/HttpRunner 中文手册:http://cn.httprunner.org/ 下载安装 使用pip命令进行安装 pip install httpr...

    简介

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

    项目地址:https://github.com/HttpRunner/HttpRunner
    中文手册:http://cn.httprunner.org/

    下载安装

    使用pip命令进行安装

    pip install httprunner
    

    安装后校验是否安装成功,可以使用如下命令校验

    hrun -v
    
    har2case -v
    

    入门使用

    测试场景

    测试接口:http://httpbin.org/get
    接口类型:GET

    用例设计

    httpRunner的测试用例支持两种文件格式:YAML和Json。 下面以YAML为例:
    注意:“:”后面需要加一个空格,否则无法识别

    - config:
        name: httpbin api test
        request: http://www.htttpbin.org
    - test:
        name: get request
        request:
          url: /get
          method: GET
        validate:
          - eq: [status_code, 200]
    

    相关资料:
    httpRunner用例结构

    运行测试

    使用hrun中子星测试:如下所示:

    hrun E:\study\学习文件\python_InterfaceTest\python_ApiTest\test_Case\test_httpbin.yml
    

    在这里插入图片描述
    查看测试报告:
    路径为上图标红部分

    HttpRunnerManager

    HttpRunnerManager时基于httpRunner的接口自动化测试平台,该工具时对HttpRunner的包装和web图形化。另外还增加了一些新的概念(项目/模块)用来组织用例。
    项目地址:https://github.com/HttpRunner/HttpRunnerManager

    下载安装

    1. 先安装mysqel数据库服务端,并设置为utf-8编码,创建相应httpRunnerManager数据库,设置好相应用户名,密码,启动mysql
      下载地址:https://dev.mysql.com/downloads/installer/
      在这里插入图片描述
    2. 将HttpRunnerManager下载下来,解压放在任意盘符位置,可以根据自己爱好重命名(HttpRunnerManager)

    环境配置

    HttpRunnerManager支持分布式执行,模块和项目执行可选择为同步或异步方式,因此需要安装相关依赖工具。
    erlang
    Erlang是一种通用的面向并发的变成语言,它有瑞典电信设备制造上爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的变成语言和运行环境
    下载地址:http://www.erlang.org/downloads

    Rabbitmq
    RabbitMq是一个由Erlang语言开发的QMQP(高级消息队列协议)的开源实现。它支持多个消息传递协议。
    RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求,另外安装RabbitMQ需要先安装erlang
    下载地址:http://www.rabbitmq.com/download.html
    在这里插入图片描述
    下载后双击rabbitmq-server-x.x.x.exe文件进行安装。安装完成后如下图所示,选中RabbitMQ service -start然后以管理员身份运行。
    在这里插入图片描述
    可以通过访问http://localhost:15672进行测试,默认的登录账号为guset,密码:guest

    相关资料RabbitMQ Windows环境安装官方手册

    如果:无法访问http://localhost:15672,按照一下方法执行

    打开RabbitMQ Server的开始菜单安装目录
    选择RabbitMQ Command Prompt 命令行并打开,输入
    rabbitmq-plugins enable rabbitmq_management
    再启动sever 尝试访问,问题解决。
    在这里插入图片描述

    数据库配置

    打开HttpRunnerManager项目的Setting.py文件,进行如下配置
    在这里插入图片描述

    work配置

    在这里插入图片描述

    安装依赖库文件

    打开CMD命令窗口,切换到HttpRunnerManager目录,然后执行下面命令,自动安装需要的依赖库文件

    pip install -r requirements.txt
    

    数据库迁移

    cmd命令窗口下执行一下命令

    python manage.py makemigrations ApiManager   #生成数据迁移脚本
    python manage.py migrate   # 应用到db生成数据表
    

    创建超级用户,用户后台管理数据库,并按提示输入相应用户名、密码,邮箱

    python manage.py createsuperuser
    

    启动服务

    输入下面命令启动服务

    python manage.py runserver
    

    启动过程错误
    在这里插入图片描述
    解决方案:

    pip install celery
    

    服务启动成功后,打开如下地址,可以进入到不同页面

    展开全文
  • HTTPRunner

    2021-03-01 20:28:10
    HTTPRunner 安装 在cmd中输入命令pip install httprunner==2.3.0 输入hrun -V打印出版本就是安装成功了。 新建项目 在想要新建项目的文件夹中打开cmd,输入hrun --startproject 项目名称即可在当前目录下创建项目。...


    一、HTTPRunner项目准备

    1.1 安装

    在cmd中输入命令pip install httprunner==2.3.0
    输入hrun -V打印出版本就是安装成功了。
    在这里插入图片描述

    1.2 新建项目

    在想要新建项目的文件夹中打开cmd,输入hrun --startproject 项目名称即可在当前目录下创建项目。.

    在这里插入图片描述

    1.3 HttpRunnser 2.x工程目录结构

    • api目录

      • a.主要存放接口的最小执行单元(正向用例)
    • reports目录

      • 用于存放测试报告
    • testcases目录

      • 用于处理接口的复杂执行逻辑
      • 实现接口与接口之间的依赖
    • testsuites目录

      • 用于添加多条测试用例,批量执行
      • 处理数据驱动测试(参数化)
    • env文件

      • 用于定义全局环境变量
      • 可以在整个项目的测试脚本中调用
    • debugtalk.py文件

      • 用于处理动态参数
      • 也可以处理参数化动态数据

    1.4 YAML配置文件的格式要求

    • yaml是数据格式,不是数据类型
    • yaml配置文件的后缀为.yaml或者.yml
    • yaml配置文件中使用#进行注释,不可以在yaml数据行内进行注释
    • yaml为key: value,key往往与冒号之间不加空格,value与冒号之间必须得加空格
    • yaml配置文件中,同一区域的key不能重复
    • yaml中value的数据类型,如果value中含有字母,会识别为字符串类型(false、true、on、off、null除外),可以无需添加引号
    • 可以使用成对的单引号或者双引号来指定字符串类型
    • 如果value为数字,会指定识别为int或float类型
    • yaml是一个强缩进的数据格式,同级键值对缩进必须一致,默认缩进2格
    • 如果使用- 代表为数组结构(列表)

    二、登录接口测试用例设计

    2.1 基础的测试用例结构

    /api/login_api.yml

    # 指定当前用例的名称
    name: "登录接口-正向用例"
    
    # 指定接口的请求信息
    request:
        # 指定当前用例的url
        url: 'http://127.0.0.1:8000/user/login/'
        # 指定当前接口的请求方式
        method: POST
        # 指定请求头参数
        headers:
            Content-Type: "application/json"
        # 指定json请求参数
        json:
            username: 'aaron123'
            password: '123456'
    
    # 指定断言信息
    validate:
        # 方式一:
        # - 断言方式: ["实际值", 期望值]
        - eq: ["status_code", 200]
        # 方式二(不常用):
        # 完整定义
        # - {"check": "实际值", "comparator": "断言方式", "expect": 期望值}
    	# - {"check": "status_code", "comparator": "le", "expect": 201}
    

    2.2 运行测试用例

    2.2.1 使用命令行运行

    输入命令hrun 需要运行的用例路径(相对路径和绝对路径均可),即可运行测试用例。
    在这里插入图片描述

    2.2.2 使用py文件运行

    from httprunner.api import HttpRunner
    
    obj = HttpRunner(log_level="DEBUG")
    
    obj.run(r'E:\httprunner_dev06\testsuites\login_testsuite.yml')
    res = obj.summary
    

    2.3 修改输出的日志级别

    输入命令hrun 需要运行的用例路径 --log-level 指定的等级即可修改输出的日志级别。
    在这里插入图片描述

    2.4 参数设置

    2.4.1 支持的合法的请求方式method

    GET、POST、PUT、PATCH、DELETE,忽略大小写,推荐使用大写。

    2.4.2 支持的请求头Content-Type

    • application/json,请求参数需要为json
    • application/x-www-form-urlencoded,请求参数需要为data

    2.4.3 支持的请求参数类型

    • json,指定json请求参数
    • data,指定x-www-form-urlencoded参数
    • params,指定查询字符串参数

    2.4.4 支持的断言方式

    • eqequals==is,相等断言
    • ltless_than,小于
    • leless_than_or_equals,小于等于
    • gtgreater_than,大于
    • gegreater_than_or_equals,大于等于
    • contains,包含

    2.4.5 支持的断言方式实际值

    • status_code,提取响应状态码
    • cookies,提取cookies信息
    • headers,提取请求头信息
    • contenttextjson,提取响应数据,如果接口返回的是json数据,那么这三个获取均类似于Python中字典或者嵌套字典的列表。取值用json.key来取值
    • ok,当前的请求是否成功
    • url,提取请求url信息

    三、参数化处理

    3.1 base_url

    我们可以把url前面公共的地方提取为base_url,简化url的写法。

    # 如果有设置base_url会指定拼接一个完整的url路径
    base_url: 'http://127.0.0.1:8000'
    
    request:
    #    url: 'http://127.0.0.1:8000/user/login/'
        url: '/user/login/'
    

    3.2 设置参数

    在variables中设置变量的值,调用时使用$变量名即可。

    注意

    1. 定义变量之后,可以在定义变量下方的任意地方调用
    2. 一般在当前yaml配置文件中才能调用
    variables:
    	# 变量key: 变量的值
        uname: 'aaron123'
        passwd: '123456'
        status: 200
    ...
        json:
            username: $uname
            passwd: $passwd
    validate:
        - eq: ["status_code", $status]
    

    3.3 env变量

    在项目根路径下的.env文件中也可以定义变量,使用key=value的方式去定义。
    在.env文件中定义的变量,可以在任意yaml配置文件中调用

    USERNAME=aaron123
    PASSWORD=123456
    

    在api/demo_api.yml文件中调用。使用${ENV(变量名)}调用。

        json:
            username: ${ENV(USERNAME)}
            password: ${ENV(PASSWORD)}
    

    3.4 debugtalk函数

    我们如果想要给某个变量添加动态的值,可以在项目根路径下的debugtalk.py文件中定义函数。

    debugtalk.py文件中的函数可以在任意yaml配置文件中调用。

    def random_generate_user_agent():
        user_agent_list = ["Mozilla/5.0 Aaron", "Mozilla/5.0 Aaron1", "Mozilla/5.0 Aaron2",
                           "Mozilla/5.0 Aaron3"]
        return random.choice(user_agent_list)
    

    然后在需要的地方调用函数,实现动态数据。
    调用方式为${方法名()}

            User-Agent: "${random_generate_user_agent()}"
    

    此时,User-Agent的值就会随机从user_agent_list中取出。

    3.5 用例依赖

    如果当前有一个用例需要先登录才能正确请求,那么我们就需要在testcases/demo_testcase.yml文件中添加用例依赖关系。

    
    # 定义全局配置信息
    # a.定义teststeps中公共信息
    config:
        name: "测试获取项目列表数据接口"
    
    # 定义每个测试步骤
    teststeps:
    -
        name: "先登录"
        # 导入需要执行的用例的yml路径
        api: "api/login_api.yml"
        # 用于提取参数并创建变量(可多个),创建的变量可以在下方任意处调用
        extract:
        	# 把content响应体内的token值取出来,赋给变量token
            - token: content.token
    -
        name: "获取项目列表数据"
        api: api/projects_api.yml
    

    在api/projects_api.yml文件中,引用前面定义的token变量。

        headers:
            Authorization: "JWT $token"
    

    3.6 variables优先级顺序:

    testcase config variables > teststep extract > teststep variables > api variables

    建议只在一个地方使用variables,不然项目混乱,不便管理。

    3.7 数据驱动

    如果想要批量执行用例,需要将逻辑写在testsuite文件中。

    3.7.1 方式一

    testsuites/login_testsuite.yml

    # 定义所有用例的公共信息
    config:
        name: "某某套件"
    
    testcases:
    -
        name: "测试登录接口"
        testcase: "testcases/login_testcase.yml"
        
        # 定义数据驱动测试(参数化),此处定义的参数变量优先级最高
        parameters:
            # - 参数1-参数2-参数3-...:
            - title-username-password-status_code-msg:
            	  # 这里的值与上面的参数一一对应
                  - ["正常登录", "aaron123", "123456", 200, "token"]
                  - ["密码错误", "aaron123", "123457", 400, "non_field_errors"]
                  - ["账号错误", "aaron188", "123456", 400, "non_field_errors"]
                  - ["用户名为空", "", "123456", 400, "username"]
                  - ["密码为空", "aaron123", "", 400, "password"]
    
    #        - title-username-password-status_code-msg: ${P(data/data.csv)}
            - title-username-password-status_code-msg: ${get_accounts()}
    

    修改对应的testcase和api文件,使用$变量名对parameters中的参数一一替换,即可实现数据驱动。

    3.7.2 方式二

    将测试用例写在csv文件中。
    第一行需要和parameters中定义的字段和顺序一致。

    data/data.csv

    title,username,password,status_code,msg
    正常登录,aaron123,123456,200,token
    密码错误,aaron123,123457,400,non_field_errors
    账号错误,aaron188,123456,400,non_field_errors
    用户名为空,,123456,400,username
    密码为空,aaron123,,400,password
    

    修改testsuite文件的parameters。

        parameters:
            - title-username-password-status_code-msg: ${P(data/data.csv)}
    

    但是这种方法有一个弊端,所有csv文件中读出的数据都是字符串格式,我们一般不这样调用,可以使用程序读出csv,然后再进行参数化处理。

    3.7.2 方式三

    在debugtalk.py文件中定义一个返回参数列表的函数(可以从Excel中读取,也可以从csv读取,也可以从数据库读取)。
    参数顺序无所谓,但是key值需要和parameters中定义的字段一致。

    def get_accounts():
        accounts = [
            {"title": "正常登录", "username": "aaron123", "password": "123456",
                "status_code": 200, "msg": "token"},
            {"title": "密码错误", "username": "aaron123", "password": "123457",
                "status_code": 400, "msg": "non_field_errors"},
            {"title": "账号错误", "username": "aaron188", "password": "123456",
                "status_code": 400, "msg": "non_field_errors"},
            {"title": "用户名为空", "username": "", "password": "123456",
                "status_code": 400, "msg": "username"},
            {"title": "密码为空", "username": "aaron123", "password": "",
                "status_code": 400, "msg": "password"},
        ]
        return accounts
    

    修改testsuite文件的parameters。

        parameters:
            - title-username-password-status_code-msg: ${get_accounts()}
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,713
精华内容 2,685
热门标签
关键字:

httprunner