1.
我經常是在 windows 上進行代碼編寫,但是無奈代碼寫完了總是要放到服務器上跑,自動化測試的代碼也不例外。
但是當我把 windows 上寫好的代碼放到 linux 上的時候,總是會出現各種各樣的問題。
比如我用的 python 版本是 3.7,但是大多數 linux 機器並不會默認安裝這個版本。我得重新在 linux 上安裝一份。
我在本地使用了很多的庫,比如 pytest 和 requests, 我得在 linux 上重新執行一遍 pip install, 而且要指定他們的版本和我本地的版本一致,以免出現因庫版本不一致造成的兼容問題。
現在我把我的自動化測試代碼簡化一下,結構包含了 python3.7 的版本, pytest 和 requests 庫。
安裝的庫存放到一個叫做 rqm.txt 的文件當中,當在新的系統中間需要安裝的時候,使用 pip install -r rqm.txt
進行安裝。
2.
在 linux 系統中安裝 docker 官方文檔寫得非常詳細,照着敲就行了,這里不贅述。安裝好 docker 以后可以先查看 docker 的版本情況,確認安裝成功。
docker info
這是我的運行代碼:
# test_demo.py
import pytest
import requests
def test_demo():
resp = requests.get("http://httpbin.org/get?id=2").json()
assert resp["args"]["id"] == "2"
if __name__ == '__main__':
pytest.main()
編寫 .dockerignore 文件。 制作鏡像會把我們現在的自動化代碼拷貝到 docker 中,但是緩存文件,虛擬環境的文件時不應該拷貝過去的, .dockerignore 文件里面的配置項會被忽略。
.pytest_cache/
venv/
.ider/
__pycache__/
編寫 Dockerfile 文件:
FROM python:3.7-alpine
ENV INSTALL_PATH /ApiTest
WORKDIR $INSTALL_PATH
COPY . .
RUN pip install -r rqm.txt
CMD python test_demo.py
第一步:指定 python 版本為 3.7;
第二步:指定運行路徑;
第三步:拷貝python代碼
第四步:安裝 python 庫
步:運行腳本。
制作鏡像:
docker build -t mypython .
運行容器:
docker container run myython
運行的結果: