pytest-bdd 是用 python 實作 cucumber 的框架,有在寫測試的開發者,肯定不能錯過

pytest-bdd 是用 python 實作 cucumber 的框架,有在寫測試的開發者,肯定不能錯過
上篇 使用 Memory 作為 Web API 的 Repository,這次改用 Postgresql 並搭配 DI Container,也包含了資料庫的操作驗證
在 python 利用 FastAPI 建立 API 非常的簡單,同樣的,要測試它也非常地容易,這裡我會使用一個簡單的例子,演練 pytest 測試 API (FastAPI)
pytest 是一個功能強大且靈活的 Python 測試框架,身為一個開發者學好怎麼寫測試是基本的必要條件,以下是我對 pytest 的使用心得。
之前有介紹過 TestContainers 在 .NET 的使用方式 傳送們,同樣的 Python 也可以使用它,就不再贅述太多;我將使用 WSL + Python 環境搭建起開發環境。
某一天我的同事提醒我說新版的 Rider,SpecFlow for Rider 上不能使用了,於是我暫緩更新了一段時間,現在已經有 Reqnroll 方案。這裡有 Reqnroll 誕生原因,From SpecFlow to Reqnroll: Why and How • Reqnroll,總結內容就是 SpecFlow 已經很長一段時間沒有更新,所以作者決定 Fork SoecFlow 專案,名為 Reqnroll,現在我要來體驗 Reqnroll 跟過往的 SpecFlow 有沒有甚麼不一樣
JSON Path 是一種 JSON 文件查詢語言,其靈感來自 XPath 為 XML 文件提供的功能。它最初由 Matt Goëssner 提出,現在已成為 IETF 規範:RFC 9535。我強大的同事提出用 JsonPath 來比對特定的欄位,測試步驟讀起來清晰,復用性也高,實作起來也是蠻簡單的,接下來就看看我們怎麼做的。
上篇 提到使用 Prism 來建立 Mock Server,經同事反饋,他期望能使用類似像 Wiremock 有 API 可以在測試步驟根據場景快速的定義 Mock Server 的回傳值,而我期望除了用 API 動態的決定 Mock Server 的回傳值之外,還能匯入 Open API/Swagger,於是我把我手上收集的 Mock Server 清單玩了一遍,發現這一套 Mock Server 可以滿足我需要的
Specflow 的 table 預設用來處理單一欄位,若是想要在欄位裡面塞入 json 或者是比對 json 就得自行處理,這裡列出我常用的方式。
在測試時,TestContainers 它可以簡化我們產生 Container 的步驟,配置 Container 的方式也相當的簡單、明確;從同事得知 TestContainers,周末則來研究一下使用方式。