[英]How to test dockerized flask app using Pytest?
我已經構建了燒瓶應用程序,該應用程序旨在在docker容器中運行。 如果標頭密鑰與我放入docker-compose environment
密鑰匹配,它將接受POST HTTP方法並返回適當的JSON響應。
...
environment:
- SECRET_KEY=fakekey123
...
問題是:談到測試。 app
或flask(pytest)的client
固定裝置當然找不到docker-compose environment
。 原因是應用不是從docker-compose開始,而是從pytest開始。
secret_key = os.environ.get("SECRET_KEY")
# ^^ the key loaded to OS env by docker-compose
post_key = headers.get("X-Secret-Key")
...
if post_key == secret_key:
RETURN APPROPRIATE RESPONSE
.....
解決此問題的方法(最佳/推薦)是什么?
我找到了一些插件一個 , 2 , 3做到這一點。 但是我在這里問是否還有更多的“簡單” /“通用”方法。 原因我也想使用CI / CD工具自動執行此測試。
您很可能需要在容器內部運行py.test
。 如果您在本地運行,則主機看到的內容與容器看到的內容之間將會發生沖突。
所以選項1是使用docker exec
:
$ docker exec -it $containerid py.test
然后,方法2是在setup.py
創建腳本或任務,以便您可以運行以下更簡單的命令:
$ python setup.py test
我當前的解決方案是模擬讀取OS環境的功能。 如果應用使用docker啟動,則會加載OS ENV。 為了簡化測試,我只是模擬了該函數。
def fake_secret_key(self):
return "ffakefake11"
def test_app(self, client):
app.secret_key = self.fake_secret_key
# ^^ real func ^^ fake func
或者另一種選擇是使用pytest-env作為@bufh在注釋中建議。
創建pytest.ini
文件,然后放入:
[pytest]
env =
APP_KEY=ffakefake11
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.