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

使用 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

出现这个证明成功了

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/644016.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3 命名实体识别调优化

能走到这里说明你对模型微调有了一个基本的认识。那么开始一段命名实体的任务过程,下面使用huggingface官网的数据。 1 准备模型 下面的模型自己选择一个吧,我的内存太第一个模型跑不了。 https://huggingface.co/ckiplab/bert-base-chinese-ner/tree…

stack、queue(priority_queue)的模拟实现和deque的简单介绍

stack和queue(priority_queue) 1. 容器适配器 适配器(Adapter):一种用来修饰容器(Containers)或仿函数(Functors)或迭代器(Iterator)接口的东西。 适配器是一种设计模式,该模式将一个类的接口转换成客户希望的另外一个接口。 现实中拿插座来说&#xf…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

无门槛做数据可视化,真的假的?

做数据可视化确实没有太高的门槛&#xff0c;不管是企业还是个人都能找到适合自己的BI数据可视化工具&#xff0c;通过点击、拖拉的操作实现自主分析、智能分析、数据可视化&#xff0c;还可实现大屏可视化、移动端数据可视化分析&#xff0c;实现实施监控数据、日常运营决策、…

验证 python解释器是否安装成功

一. 简介 前一篇文章学习了下载并安装 python解释器&#xff0c;文章如下&#xff1a; windows系统下python解释器安装-CSDN博客 本文验证 python解释器是否安装成功。 二. 验证 python解释器是否安装成功 1. 首先&#xff0c;打开 Windows系统的 "cmd" 界面。…

2024商业地产五一劳动节健康大会朋克养生市集活动策划方案

2024商业地产五一劳动节健康大会朋克养生市集&#xff08;带薪健康 快乐打工主题&#xff09;活动策划方案 活动策划信息&#xff1a; 方案页码&#xff1a;53页 文件格式&#xff1a;PPT 方案简介&#xff1a; 打工不养生 赚钱养医生 期待已久的五一假期&#xff0c; …

wandb注册 wandb: ERROR api_key

wandb: ERROR api_key not configured (no-tty). call wandb.login(key[your_api_key]) Traceback (most recent call last): 背景 使用yolov8训练时 在pycharm中出现wandb账号未注册错误 Transferred 355/355 items from pretrained weights TensorBoard: Start with tensor…

Day13-Java进阶-IO字节流字符流及其练习题

1. IO流介绍 2. IO 流体系结构 字节流读取纯文本文件会出现乱码问题 2.1 FileOutputStream 字节输出流 package com.itheima.stream.output;import java.io.FileOutputStream; import java.io.IOException;public class FileOutputStreamDemo3 {/*IO流的异常处理方式: jdk7版本…

58岁第一代「晶女郎」激罕现身

90年代性感女神关秀媚在2006年拍完内地剧集《暴雨梨花》后更全面息影&#xff0c;而且更甚少现身于人前。日前曾志伟庆祝71岁生日&#xff0c;举行盛大慈善素宴广邀圈中好友&#xff0c;为寺庙重建工程筹募经费。女神关秀媚便罕有接受访问透露近况。 当天关秀媚将头发盘起&…

windows10开机自动启动 - 添加启动项 - 设置软件自动启动

前言 无需安装额外软件&#xff0c;可手动决定开机自动启动什么软件。 步骤 1&#xff09;开始&#xff0c;运行"shell:startup"&#xff0c;即可打开自启动目录 shell:startup 2&#xff09;将软件的快捷方式 扔进去&#xff0c;ok&#xff01; 3&#xff09;重启…

Unity射击游戏开发教程:(5)使用 GetComponent 在 Unity 中进行脚本通信

我认为脚本通信是刚开始使用 Unity 时较难掌握的概念之一,我将继续讨论这个概念。在本文中,我将介绍如何在游戏对象发生碰撞时使用 GetComponent 来访问另一个脚本。 在这个游戏场景中,我有两个游戏对象,它们都有自己的脚本,需要进行通信。我们有玩家脚本和敌人脚本。Enem…

使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化

有了之前的文章铺垫&#xff0c;这篇文章开始&#xff0c;我们聊聊如何折腾 AI 工作流&#xff0c;把不 AI 的应用&#xff0c;“AI 起来”。 写在前面 上个月&#xff0c;我们聊过了《使用 Dify 和 AWS Bedrock 玩转 Anthropic Claude 3》&#xff0c;里面介绍了如何使用交互…