在我看來介面測試相對其他型別的測試是比較簡單的。對於最常見的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) 的技術開發。
總結
介面測試的工具還有很多,本文相當於每種玩法都介紹了一種。不管用哪種工具,只要足夠精通,那麼都可以解決工作中的大部分問題。