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:\soft\venv_hrun\Scripts>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:\Users\dell>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交流群:717225969
- 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交流群:717225969
[
    {
        "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"},
                "json": {
                    "username": "test",
                    "password": "123456"
                }
            },
            "validate": [
                {"eq": ["status_code", 200]},
                {"eq": ["content.msg", "login success!"]},
                {"eq": ["content.code",0]}
            ]
        }
    }
]

運行用例

運行用例很簡單,直接在cmd里面,cd到test_login.yml目錄,運行

hrun test_login.yml

或者執行json文件

hrun test_login2.json

執行結果如下

D:\soft\untitled>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:\soft\untitled\reports\20200612T111815.719602.html


D:\soft\untitled>

查看測試報告

運行完成后會在當前目錄生成一個report文件夾,里面會有一個html格式的報告文件,按時間戳生成的

點開log可以查看詳情

請求(request)

返回 (response)

斷言 (Validators)

這一篇跟1.x版本沒什么區別


httprunner 2.x實戰教程點我 ->立即報名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM