介面測試的N中玩法

蟲師發表於2021-05-07

在我看來介面測試相對其他型別的測試是比較簡單的。對於最常見的HTTP介面,只需要知道介面的 URL方法引數型別返回值 ... 就可以對介面進行測試了。

apifox

如果你是入門級選手,那麼apifox應該很適合你,它是一款類似postman的介面測試工具。而且功能也很強大,定位 Postman + Swagger + Mock + JMeter。你值得嘗試。

為什麼不postman? 嗯,你說的都對!

HttpRunner

如果你不想用工具,也不想寫程式碼。想更加簡單高效的編寫介面測試用例,那麼HttpRunner2.x 就很適合你了。

{
    "config": {
        "name": "testcase description",
        "variables": {},
        "verify": false
    },
    "teststeps": [
        {
            "name": "/api/v1/hello/",
            "request": {
                "url": "http://127.0.0.1:8000/api/v1/hello/",
                "method": "GET"
            },
            "validate": [
                {"eq": ["body.code", 10200]},
                {"eq": ["body.message", "success"]}
            ]
        }
    ]
}

httpRunner已經更新3.x,HtppRunner 3.x還支援寫程式碼了,還支援介面效能測試。我知道了,謝謝你的提醒!

Robot Framework

Robot Framework是一款通用了的測試框架,支援各種Library,如果你對它很熟悉的話,拿來做介面自動化手到擒來!

我在網易雲課堂有免費視訊哦!
https://study.163.com/course/introduction/1004056051.htm

JMeter

JMeter是用來做效能測試的,在當前大部分系統都前後端分離的情況下,服務端效能 ~= 介面效能。

那麼我把併發數設定成1,那麼它就變身成為了介面自動化工具。

設定成100, 它又變成了介面效能工具,在功能/效能之間來回切換的大佬。可鹽可甜!

Gauge

Gauge是基於BDD測試框架。拿它來做介面測試,怎麼說呢,不是不行。就像妹子叫一個程式設計師修電腦。

  • 定義行為檔案(測試資料)
login interface
===============
this is login api


test login
----------

* test post "/login" api
     |username  | password | code | message |
     |----------|----------|------|---------|
     | null | |10103|username or passwrord is null|
     |  | null |10103|username or passwrord is null|
     | error |error |10104|username or password error|
     | admin |a123456 |10200|login success|
  • 執行測試
from getgauge.python import step
from .utils.base import Base
import requests


@step("test post <url> api <table>")
def test_post_request(url, table):
    username = [str(user)
                for user in table.get_column_values_with_name("username")]
    password = [str(pawd)
                for pawd in table.get_column_values_with_name("password")]
    code = [int(code) for code in table.get_column_values_with_name("code")]
    message = [str(msg)
               for msg in table.get_column_values_with_name("message")]
    for i in range(len(username)):
        data = {"username": username[i], "password": password[i]}
        r = requests.post(Base.url + url, data=data)
        result = r.json()
        print(result)
        assert result["code"] == code[i]
        assert result["message"] == message[i]

看不懂?!沒關係,妹子也看不懂你是如何把電腦修好的,總之,看上去很厲害的樣子就對了。

httpx

如果你喜歡寫程式碼,還有什麼是比httpx庫更簡單好用的嗎? httpx本身只是一個HTTP測試庫而且,要做自動化還需要單元測試框架配合,如 pytest

import httpx

def test_case():
    r = httpx.put('http://httpbin.org/put', data = {'key':'value'})
    assert r.status_code
    assert r.json() is dict()

有人高喊:你一定是偷了Requests家東西!httpx 漲紅著臉說:參考不能算偷,偷....程式設計師的事情,能算偷嗎?接連便是高大上的話,什麼"支援非同步了,下一代HTTP庫...", 引得眾人都鬨笑起來。

還不服是吧!?就憑httpx 只要敲5個字元,而requests 要8個字元,就是httpx贏!

MeterSphere

metersphere是一個開源的測試平臺,由商業公司維護,比起一些個人的測試平臺專案,穩定性和易用性上面做的還是不錯的。

你完全可以基於MaterSphere做二次開發,它用的非常主流的 Java(spring) + JavaScript(vue.js) 的技術開發。

總結

介面測試的工具還有很多,本文相當於每種玩法都介紹了一種。不管用哪種工具,只要足夠精通,那麼都可以解決工作中的大部分問題。

相關文章