• httprunner 2.x学习1-环境与登录接口案例


    前言

    由于之前写过一个 httprunner 系列是针对 1.5.8 版本写的教程, httprunner版本更新的还挺快的,最近已经到3.x版本了,看了下改动还是挺大的。
    但是考虑到目前还是有很多公司的小伙伴在用 2.x 版本,所以这里在之前 1.5.8 基础上快速的更新一遍,重复的内容就直接复制过来的
    对于直接看2.x 版本的小伙伴 也是可以快速上手的,这样就不用纠结1.x版本和2.x版本的区别了。

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

    具有以下优点:

    • 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
    • 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
    • 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
    • 支持完善的测试用例分层机制,充分实现测试用例的复用
    • 测试前后支持完善的 hook 机制
    • 响应结果支持丰富的校验机制
    • 基于 HAR 实现接口录制和用例生成功能(har2case)
    • 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
    • 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
    • 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
    • 极强的可扩展性,轻松实现二次开发和 Web 平台化

    分层机制 是2.x 版本才有的功能, 1.x 版本不支持分层机制

    环境准备

    httprunner目前有3个版本,1.x和2x版本和3.x版本,本篇以2.5.7版本为学习的基础版本

    使用pip安装

    pip install httprunner==2.5.7

    安装完成后检查版本号

    hrun -V

    D:softvenv_hrunScripts>hrun -V
    2.5.7
    

    使用案例

    登录之后获取token这是最常见的场景了,接下来以独立接口为案例,登录接口这个是访问我本地的接口,你们是没法访问的,
    具体的登录接口开发需要用到django,查看这篇https://www.cnblogs.com/yoyoketang/p/11517213.html
    登录接口相关文档信息如下:

    • 访问地址:http://127.0.0.1:8000/api/v1/login/
    • 请求类型:POST
    • 请求头部:application/json
    • 请求参数:{"username":"test", "password":"123456"}

    使用httpapi命令行工具,访问后测试接口报文信息如下

    C:Usersdell>http http://127.0.0.1:8000/api/v1/login/  username=test password=123456 -v
    POST /api/v1/login/ HTTP/1.1
    Accept: application/json, */*
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Content-Length: 42
    Content-Type: application/json
    Host: 127.0.0.1:8000
    User-Agent: HTTPie/1.0.3
    
    {
        "password": "123456",
        "username": "test"
    }
    
    HTTP/1.1 200 OK
    Allow: POST, OPTIONS
    Content-Length: 109
    Content-Type: application/json
    Date: Thu, 19 Sep 2019 15:15:18 GMT
    Server: WSGIServer/0.2 CPython/3.6.0
    Vary: Accept, Cookie
    X-Frame-Options: SAMEORIGIN
    
    {
        "code": 0,
        "msg": "login success!",
        "token": "000038efc7edc7438d781b0775eeaa009cb64865",
        "username": "test"
    }
    

    编写yml格式脚本

    接下来转换成httprunner的YAML格式脚本用例,保存为test_login.yml

    # 上海悠悠,httprunner QQ交流群:1121184576
    - config:
        name: logincase
        variables: {}
    - test:
        name: login case1
        request:
            url: http://127.0.0.1:8000/api/v1/login/
            method: POST
            headers:
                Content-Type: application/json
                User-Agent: python-requests/2.18.4
            json:
                username: test
                password: 123456
        validate:
            - eq: [status_code, 200]
            - eq: [headers.Content-Type, application/json]
            - eq: [content.msg, login success!]
            - eq: [content.code, 0]
    

    json格式

    如果你不喜欢yaml格式,用json也是可以的。新建一个test_login2.json文件,内容如下

    # 上海悠悠,httprunner QQ交流群:1121184576
    [{
    		"config": {
    			"name": "logincase",
    			"variables": {}
    		}
    	},
    	{
    		"test": {
    			"name": "login case1",
    			"request": {
    				"url": "http://127.0.0.1:8000/api/v1/login/",
    				"method": "POST",
    				"headers": {
    					"Content-Type": "application/json",
    					"User-Agent": "python-requests/2.18.4"
    				},
    				"json": {
    					"username": "test",
    					"password": "123456"
    				}
    			},
    			"validate": [{
    					"eq": ["status_code", 200]
    				},
    				{
    					"eq": ["headers.Content-Type", "application/json"]
    				},
    				{
    					"eq": ["content.msg", "login success!"]
    				}, {
    					"eq": ["content.code", 0]
    
    				}
    			]
    		}
    	}
    ]
    

    运行用例

    运行用例很简单,直接在cmd里面,cd到test_login.yml目录,运行

    hrun test_login.yml

    或者执行json文件

    hrun test_login2.json

    执行结果如下

    D:softuntitled>hrun test_login.yml
    INFO     HttpRunner version: 2.5.7
    INFO     Start to run testcase: logincase
    login case1
    INFO     POST http://49.235.92.12:6009/api/v1/login/
    INFO     status_code: 200, response_time(ms): 180.63 ms, response_length: 109 bytes
    
    .
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.184s
    
    OK
    INFO     Start to render Html report ...
    INFO     Generated Html report: D:softuntitled
    eports20200612T111815.719602.html
    
    
    D:softuntitled>
    

    查看测试报告

    运行完成后会在当前目录生成一个report文件夹,里面会有一个html格式的报告文件,按时间戳生成的

    点开log可以查看详情

    请求(request)

    返回 (response)

    断言 (Validators)

    这一篇跟1.x版本没什么区别

  • 相关阅读:
    mongodb studio 3t 破解无限使用脚本
    香港低价linux虚拟主机,
    c#4.0 Task.Factory.StartNew 用法
    系统进不去怎么办?教你利用bootice工具引导修复系统
    用一个URL加一个JAVA壳做成一个安卓应用
    ANDROID开机动画分析
    你的Android不好用,都是因为这几点原因
    横竖屏切换时不销毁当前activity 和 锁定屏幕
    APP流氓大法之apk 静默安装
    设备管理器勾选后不能再取消了
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13109808.html
Copyright © 2020-2023  润新知