基于Python+Selenium+Pytest的Dockerfile如何写

时间:2024-04-30 18:42:21

使用 Dockerfile 部署 Python 应用程序与 Selenium 测试

在本文中,我们将介绍如何使用 Dockerfile 部署一个 Python 应用程序,同时利用 Selenium 进行自动化测试。我们将使用官方的 Python 运行时作为父镜像,并在其中安装所需的依赖项和工具。

1. 编写 Dockerfile

# 使用官方的 Python 运行时作为父镜像
FROM python:3.9

# 设置工作目录为/app
WORKDIR /app

# 安装依赖
RUN pip install requests selenium pytest pytest-testreport jinja2

#  copy你的项目

COPY  UIAutomation  UIAutomation 

# 添加 Google Chrome 密钥并安装 Chrome 浏览器
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \
    apt-get update && \
    apt-get install -y \
        wget \
        gnupg2 \
        unzip \
    && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
    && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome-keyring.gpg \
    && apt-key add /usr/share/keyrings/google-chrome-keyring.gpg \
    && apt-get update \
    && apt-get install -y google-chrome-stable\
    && CHROME_VERSION=$(google-chrome-stable --version | awk '{print $3}') \
    && echo "Installed Chrome version: $CHROME_VERSION"

# 复制 Chromedriver 压缩包到容器中(自己官网下载压缩包)
COPY chromedriver-linux64.zip /usr/local/bin/chromedriver-linux64.zip

# 解压 Chromedriver
RUN unzip /usr/local/bin/chromedriver-linux64.zip && \
    mv chromedriver-linux64/chromedriver /usr/local/bin/chromedriver && \
    chmod +x /usr/local/bin/chromedriver

# 运行 bash
CMD ["bash"]

2. Dockerfile 解释

  • 我们选择了官方的 Python 3.9 运行时作为基础镜像。
  • 设置工作目录为 /app,这是我们应用程序的根目录。
  • 使用 pip 安装了一些必要的 Python 库,包括 requestsseleniumpytest 等。
  • 安装了 Google Chrome 浏览器,以及与之兼容的 Chromedriver。
  • 最后,设置了容器启动时的默认命令为 bash,方便用户进入容器进行调试或执行其他操作。

3. 构建 Docker 镜像并运行容器

要构建 Docker 镜像,首先将上述 Dockerfile 保存为 Dockerfile 文件,然后在包含该文件的目录中打开终端,执行以下命令:

docker build -t my-python-app .

跑起来容器

docker run -d -it --name my-python-app uib

进入到容器

docker exec -it my-python-app bash 

这将启动一个交互式容器,并在其中运行默认的 bash 命令。您可以在容器中执行任何需要的操作,例如运行 Python 脚本或进行测试。

pytest -v -s   --report=_report.html --title=UI自动化 --tester=hailong --desc=H5自动化测试--template=2

出现这个证明成功了

在这里插入图片描述