zoukankan      html  css  js  c++  java
  • 接口自动化HttpRunner安装使用 ( mac)

    环境mac 10.12

    简介:

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

    HttpRunner是一个基于Python开发的测试框架,可以运行在Mac、Linux、Windows系统平台上

    HttpRunner安装  安装的是HttpRunner2.7

    1.创建工程目录:   

    在python工作目录下创建一个项目模板

    cmd 进入到Python工作目录-->输入以下命令:

    hrun --startproject 项目名称 # 2.X版本
    httprunner startproject 项目名称 # 3.X版本

    我Python的测试工作目录是: documents/automatedTesting/pythonHttpRunner/testHttpRunner

    ---------------------------------------

      如果报错:

    maydeMacBook-Pro:testHttprunner may$ hrun --startproject mayhrun
    2020-07-18 16:04:26.717 | ERROR    | httprunner.cli:main_run:44 - No valid testcase path in cli arguments: ['--startproject', 'mayhrun']
    Sentry is attempting to send 0 pending error messages
    Waiting up to 2 seconds
    Press Ctrl-C to quit

    是因为框架升级导致的,只需要删除符号“--”即可,且使用

    httprunner
    httprunner startproject mayhttprunner

    ---------------------------------------------

    然后会生成一个myhrun的文件夹,且myhrun的文件夹下看到生成的4个目录和一个py文件

    (生成的模式是采用:测试用例分层机制。对于接口数比较多,或者测试场景比较复杂的项目,为了使测试用例更便于组织和维护,推荐使用测试用例分层机制,即单独维护 API 描述、测试用例和测试场景)

    2.目录介绍

          testcases:存放用例

          testsuites:存放套件

          reports:自动生成报告并放到该目录

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

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

    • config:作为整个测试用例的全局配置项
    • test:对应单个测试步骤(teststep),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤

     demo_testcase.yml

    config:
        name: testcase description
        variables: {}
    teststeps:
    -   name: /login
        request:
            headers:
                Sec-Fetch-Dest: document
                Sec-Fetch-Mode: navigate
                Sec-Fetch-Site: none
                Sec-Fetch-User: ?1
                User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
            method: GET
            url: https://mp.zhinengshouyin.com/login
        validate:
        -   eq:
            - status_code
            - 200
        -   eq:
            - headers.Content-Type
            - text/html; charset=UTF-8

    demo_testsuite.yml

    config:
        name: "demo testsuite"
        variables:
            device_sn: "XYZ"
        base_url: "http://127.0.0.1:5000"
    
    testcases:
    -
        name: call demo_testcase with data 1
        testcase: path/to/demo_testcase.yml
        variables:
            device_sn: $device_sn
    -
        name: call demo_testcase with data 2
        testcase: path/to/demo_testcase.yml
        variables:
            device_sn: $device_sn

    3.在Pycharm中打开新建的myhrun项目

      3-1.各文件说明

    说明:
    (1)api 文件夹:存储接口定义描述
    (2)testcases 文件夹:存储测试用例,文件夹也可以使用其它名称
    (3)testsuites 文件夹:测试测试场景,文件夹也可以使用其它名称
    (4)reports 文件夹:存储 HTML 测试报告
    (5).env文件:存储项目环境变量,通常用于存储项目敏感信息
    (6)debugtalk.py:存储项目中逻辑运算辅助函数(该文件所在目录将作为项目工程的根目录,api 文件夹都必须与其放置在相同目录)
    ·该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录
    ·该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
    ·测试例文件中的相对路径(例如.csv)均需基于项目工程根目录
    ·运行测试后,测试报告文件夹(reports)会生成在项目工程根目录

      若要新建一个.yml或.json文件

          在testcases文件夹下新建一个.yml或.json文件(一般默认有个demo的yml例子),并按照格式写入接口的相关信息

     若要自己建个.yml或.json文件,testcases文件夹右击-->NEW-->File,命名的名字以.yml或.json文件结尾,然后enter.

     

    创建完成结果如下:

    3-2. 使用har2case 将接口导出的har文件转换成json或者yam文件

      charles导出接口数据   (由链接可知命名的名称为 mplogin.har)

    在myhrun项目下新建datas文件,并且将mplogin.har复制到datas目录下

    终端进入项目myhrun

     终端输入以下指令:

    har2case datas/mplogin.har            #  默认转换成json格式的文件
    
    har2case datas/mplogin.har  -2y     #加上参数 -2y转换为yam格式

      har2case 后面的是har的文件路径

    如图 生成yam文件:

     3-3.生成测试报告

      1)将生成的yam文件拷贝到testcases目录下

    如图 

     2) 运行并导出测试报告

    执行:hrun testcases/mplogin.yml --log-level debug 或者 hrun testcases/mplogin.yml

    hrun testcases/mplogin.yml --log-level debug

    如图:

    若报错:

    ERROR: test_0000_000 (httprunner.api.TestSequense)
    Traceback (most recent call last):
    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)

    可查看 httprunner报错汇总(一)https 请求证书验证

    然后在reports文件夹下会自动生成一个html文件

       

     3)优化测试报告,生成漂亮的测试报告

    查看httprunner自带的模版,发现2.7版本只有一个模版,也就是默认的模版。

    找到报告模版的路径(不同环境的路径有点差别):/usr/local/lib/python3.7/site-packages/httprunner/report/html/template.html

     

    四.使用locust进行页面的性能测试:

       1)、安装locust第三方库:pip3 install locustio

        locust安装

       2)、使用 locusts -f 启动脚本文件

       执行命令:  locusts -f testcases/mplogin0315.yml

    这一步一直报错 (有资料显示Loust不支持python3.7的。一直搁置)

    from locust.events import request_failure

    ModuleNotFoundError: No module named 'locust.events'

     

    在pycharm查看该模块

       3)、在浏览器中进行访问:http://localhost:8089/

  • 相关阅读:
    PAT顶级 1015 Letter-moving Game (35分)
    PAT顶级 1008 Airline Routes (35分)(有向图的强连通分量)
    PAT顶级 1025 Keep at Most 100 Characters (35分)
    PAT顶级 1027 Larry and Inversions (35分)(树状数组)
    PAT 顶级 1026 String of Colorful Beads (35分)(尺取法)
    PAT顶级 1009 Triple Inversions (35分)(树状数组)
    Codeforces 1283F DIY Garland
    Codeforces Round #438 A. Bark to Unlock
    Codeforces Round #437 E. Buy Low Sell High
    Codeforces Round #437 C. Ordering Pizza
  • 原文地址:https://www.cnblogs.com/may18/p/12490617.html
Copyright © 2011-2022 走看看