国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Apifox 進行團隊接口管理指南

2022-03-30 10:29 作者:Apifox  | 我要投稿

Apifox,同 postman 一樣,最基本的功能用來接口聯(lián)調。

稍微高級點的用法可以使用 Apifox 生成各個語言發(fā)送請求的代碼,針對 Image/File 進行請求,對 Request Body 與 Response Body 進行數(shù)據(jù)校驗及測試。

「僅僅做到這些只是滿足一個開發(fā)者的使用場景。而 Apifox 更高級的用法可以使整個團隊進行受益,滿足開發(fā)測試的各個階段,對開發(fā)環(huán)境,測試環(huán)境,生產(chǎn)環(huán)境進行全環(huán)境覆蓋。對開發(fā)、測試、文檔進行更進一步的自動化」

1.?Apifox API 管理分層

Apifox 可對后端的所有請求按功能或者業(yè)務模塊進行組織,使用 markdown 對所有請求和示例添加適當?shù)拿枋觥?/p>

我們看一下 Apifox 關于組織請求及分組的建議。

  • 項目: 對應一個團隊中某個服務。項目在項目組內各個成員(server, client, QA)間進行共享。可以對整個項目添加請求,文檔、單API測試等。最重要的是可以添加「測試流程」「數(shù)據(jù)模型」,后續(xù)講到。對于一開始未在 apifox 組織請求的項目,可以「根據(jù) apidoc、swagger 等文檔自動轉化為 apifox 組織好的項目」。

  • 分組: 對應一個模塊,或者各層級子路由。如?router.use('/users')?所有的請求都在一個分組,可以根據(jù)路由互相嵌套分組。

  • 請求: 對應一個API請求,一個文檔。

  • 實例: 對應一個請求不同的參數(shù)以及響應,用于 Mock Server 以及文檔。

PS: 關于 Mock Server 和團隊共享 API,在 postman 中也存在,不過 apifox 全部免費,優(yōu)勢在我。

PS2: 一個小建議,如果能夠通過一個 Proxy,跑一遍項目,將所有請求收集起來并存儲為 Apifox 的項目,可最大幅度地節(jié)省了人為添加 API 的繁瑣性。特別是由其它工具,剛轉化為 apifox 時。

1.1.?文檔

apifox 自動生成文檔有助于團隊協(xié)作,解決了手動寫文檔,「以及更新不及時的重大bug」。

喂,那個后端,就是說你了,你文檔沒更新害我白折騰了三天三夜。

不過這樣冗余字段過多,更好的解決方案是在測試中對請求進行 json 校驗,同時充當了一部分文檔的功能。畢竟 json-schema 就是用來描述數(shù)據(jù)使數(shù)據(jù)更加可讀。

以上說到請求,對于響應的文檔,可以 json-schema 校驗或者每個字段的描述,以及更多的測試用例代表更多的細節(jié)。

1.2.?Mock

當服務器端還沒有寫好 API 時,客戶端可以自定義規(guī)則來生成接口。

更多參考 「前端該如何優(yōu)雅地Mock數(shù)據(jù)??」每個前端都應該學會的技巧[1]

2.?測試

對于每一個 Request 都需要有測試用例,驗證響應是否成功,響應時間是否過長或者響應 json 的數(shù)據(jù)類型是否正確。

測試可以使用?pm.expect?進行?BDD?測試,風格和?chai?很像,如果熟悉?chai?就很容易上手,pm.expect?底層使用 chai 實現(xiàn),與 chai BDD API 一致。

apifox 也有一些 HTTP 相關的測試 API,如 status code,header, body,并且也提供了一些 snippets。

// 響應成功
pm.test('Status code is 200', () => {
?pm.response.to.have.status(200)
})

// 響應成功 chai.expect
pm.test('Status code is 200', () => {
?chai.expect(pm.response).to.have.property('code', 200)
})

// 校驗響應數(shù)據(jù)
pm.test('Page is 100', () => {
?const jsonData = pm.response.json()
?chai.expect(jsonData.page).to.eql(100)
})

重點不在這里,使用?「apifox 可以使用圖形界面交互式無需寫代碼對接口進行測試」。

以上截圖對以下數(shù)據(jù)進行了校驗

  1. API 請求成功,狀態(tài)碼必須是 200

  2. 響應體數(shù)據(jù)必須是 JSON

  3. 響應體中 code 字段必須是數(shù)字

2.1.?示例: 測試請求參數(shù)

一個請求帶有若干參數(shù),如?GET?的?querystring(search)?以及?POST?的?body,「不同的參數(shù)會有不同數(shù)據(jù)結構的響應」。

假設一個請求不同參數(shù)返回的 json schema 完全不同,則可以寫成兩個 API 分開測試。

如果返回的 Json Schema 相同,只是值不同,則使用兩個不同的示例進行測試。

3.?集成測試

單個API測試通過后,需要把所有請求集成在一起進行測試。這時候出現(xiàn)了兩個問題

  1. 如何確保API依賴

  2. API之間如何傳遞數(shù)據(jù)

在 apifox 中可以使用環(huán)境變量維護數(shù)據(jù),在請求中用?{{}}?占位符替代。

一個常見的場景是項目使用 token 來保存登錄信息,每次請求都需要攜帶token。可以在登錄的測試代碼中設置 token 的環(huán)境變量

const url = 'http://{{HOST}}/api/login'

pm.test('There is a token', () => {
?const jsonData = pm.response.json()
?pm.expect(jsonData.token).to.a('string')
?pm.environment.set('token', jsonData.token)
})

const urlNext = 'http://{{HOST}}/api/profile?token={{token}}'

PS: 那如何自動控制所有測試的順序呢?比如以下三步,登錄成功后走第二步,登錄失敗走第三步

  1. 登錄

  2. 發(fā)帖

  3. XXX

4.?持續(xù)集成

如何將集成測試與項目集成在一起,納入版本管理,保留測試記錄,方便準時定位 bug。

可以可使用 Apifox CLI,不過僅僅能測試離線數(shù)據(jù)??蓞⒖嘉臋n Apifox: 持續(xù)集成[2]

$ apifox run examples/sample.apifox-cli.json -r cli,html

5.?總結及更多疑問總結

  1. 如何編寫測試用例

    1. apifox 底層使用?[chai.js](http://chaijs.com/api/bdd/)?的 bdd 語法作為斷言庫,另外加了一些特有的語法。

    2. apifox 可通過圖形化界面交互式校驗數(shù)據(jù)

  2. 如何debug

    點擊菜單欄 View -> Show Devtools (Show Postman Console) 可以查看響應,檢查輸出。

  3. 集成測試如何管理請求依賴

    比如: 兩個API需要有依賴關系,比如當創(chuàng)建完一個用戶后(注冊),獲取他的個人信息。獲取個人信息就需要依賴創(chuàng)建用戶這個API。

    使用 Environment Variables 可以管理依賴

  4. 如何集成到服務器端項目中

    可以使用 npm 包 apifox-cli 來集成到項目中


Apifox 進行團隊接口管理指南的評論 (共 條)

分享到微博請遵守國家法律
广丰县| 囊谦县| 黄龙县| 河曲县| 敖汉旗| 东安县| 绥中县| 西昌市| 博爱县| 迁安市| 丹东市| 甘德县| 集安市| 西峡县| 扬中市| 山丹县| 龙川县| 阿荣旗| 东源县| 个旧市| 延寿县| 丹寨县| 拜泉县| 九龙坡区| 平定县| 安仁县| 崇左市| 庄浪县| 和静县| 登封市| 靖西县| 沙湾县| 长宁区| 晋州市| 丽水市| 建昌县| 商丘市| 元谋县| 荔波县| 突泉县| 嘉祥县|