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

news2024/12/28 19:38:37

使用 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.coloradmin.cn/o/1619393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql server 恢复数据库、单表数据的方法

1、查看备份文件在哪个路径、一般文件夹名都是叫:Backup 2、下面开始还原(恢复)数据库,对着【数据库】右键--【新建数据库】--然后随便命名,如下图 3、你要是想改路径的话就拉过来,2行都要改、不想多事就直…

(四)Servlet教程——Maven的安装与配置

1.在C盘根目录下新建一个Java文件夹,该文件夹用来放置以下步骤下载的Maven; 2. 下载Maven的来源有清华大学开源软件镜像站和Apache Maven的官网,由于清华大学开源软件镜像站上只能下载3.8.8版本以上的Maven,我们选择在Apache Maven的官网上下…

Error: ‘\bibliographystyle‘ invalid for ‘biblatex‘.

这个错误是因为使用了 biblatex ,而不是传统的 BibTeX, 而 \bibliographystyle命令只能用于 BibTeX。 我的就是上述原因,冲突问题。 一种解决方法: 注释掉原文中的\usepackage{biblatex}等和biblatex 有关内容

上汽大通:依托电子签网络,升级产业供应链协同

2023年12月,法大大发布了中国首部《汽车行业合同数智化白皮书》(点击阅读及下载:中国首部!《汽车行业合同数智化白皮书》重磅发布 | 附下载)。该白皮书中基于法大大自身参与汽车行业合同数智化建设的实践和思考&#x…

笔试题之理发师问题DDD建模

背景 题目: 假设有一个理发店只有一个理发师,一张理发时坐的椅子,若干张普通椅子顾客供等候时坐。没有顾客时,理发师睡觉。顾客一到,叫醒理发师。如果理发师没有睡觉,而在为别人理发,他就会坐…

minicom安装及使用

1.安装 sudo apt-get install minicom 2.配置 sudo minicom -s 光标在 Serial port setup 上按enter键进入配置 ls /dev/ttyUSB* 查看对应 usb 节点 按相应字母进入配置 回到主菜单选择 Save setup as dfl 保存为默认配置,然后退出重新打开 3. 使用 sudo mini…

LabVIEW专栏八、类

该章目的是可以开发仪器类。 一、类的概述 一般来说类有三大特性,封装,继承和多态。 在实际项目中,最主要是继承和多态,要搞清楚这两者的概念和在LabVIEW中是怎样应用的。在LabVIEW中,面向对象编程用到的就是LabVIE…

红海云签约南都物业,助力物管行业人力资源数智一体化

南都物业服务集团股份有限公司(以下简称“南都物业”)是中国第一代、浙江省第一批注册成立的独立第三方物业服务企业,也是国内A股主板市场物业行业第一股(股票简称:南都物业,股票代码:603506&am…

PS入门|用PS设计物品尺寸,需要注意的几个重要问题

注:仅学习使用 【PS24】2024版本更新的内容比较多,对电脑配置的要求也是比较高的。建议配置:第十代i5或以上CPU。 如果是第十代i3或以下的CPU,建议安装PS2021或者以下版本。 ---这是一条不正经的分割线--- 讲了那么久的PS教程…

设计模式-构建者模式

作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS二次开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 目录 定义 特点 使用场景 优缺点 (1) 优点 …

重看Spring聚焦Environment分析

目录 一、理解Environment的设计 (一)整体理解 (二)聚焦Profiles分析 (三)聚焦Properties分析 二、Environment类图结构分析 三、PropertyResolver源码分析 (一)源码展示说明…

广东理工学院携手泰迪智能科技成功部署人工智能实验室

广东理工学院是经国家教育部批准设立的全日制普通本科院校,入选全国应用型人才培养工程培养基地、国家级众创空间试点单位、广东省高校电子商务人才孵化基地。开设34个本科专业,涵盖工学、经济学、管理学、文学、艺术学、教育学等6大学科门类&#xff0c…

Power BI 如何创建页面导航器?(添加目录按钮/切换页面按钮)

Power BI 中页导航是什么? 在Power BI中,页导航(Page Navigation)是指在报告中创建多个页面(页),然后允许用户在这些页面之间进行导航的功能。 如下图所示,页导航的选项和报告中的…

李飞飞团队《2024 年人工智能指数报告》AI十大趋势:中国AI专利数全球第一

《2024 年人工智能指数报告》 当地时间4月15日,斯坦福大学“以人为本”人工智能研究院(Human Centered Artificial Intelligence,简称HAI)发布了第七个年度AI Index报告,这是关于AI行业现状的最全面的报告之一。 报告…

聊聊go语言中的GMP模型

写在文章开头 我们都知道go语言通过轻量级线程协程解决并发问题,按照go语言的思想这些协程运行完成后即焚,那么go语言如何保证并发线程有序获取协程呢? 带着这个问题我们从go语言底层的源码来阐述这个问题: Hi,我是 s…

K-means聚类算法:如何在杂乱无章的数据中找出规律?

什么是K-means聚类算法? 在编程的世界里,K-means聚类算法就像一位无私的指路人,它不需要我们给出明确的指示,只需要我们提供数据,它就能帮助我们找到数据的归属,找到数据的“家”。 K-means聚类算法的名字…

经典的目标检测算法有哪些?

一、经典的目标检测算法有哪些? 目标检测算法根据其处理流程可以分为两大类:One-Stage(单阶段)算法和Two-Stage(两阶段)算法。以下是一些经典的目标检测算法: 单阶段算法: YOLO (You Only Loo…

【御控工业物联网】JAVA JSON结构转换、JSON结构重构、JSON结构互换(5):对象To对象——转换映射方式

御控官网:https://www.yu-con.com/ 文章目录 御控官网:[https://www.yu-con.com/](https://www.yu-con.com/)一、JSON结构转换是什么?二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构…

Linux中的vi与vim:编辑器的王者之争与深度探索

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Linux的起源与发展 2、vi与vim的历史与发展 …

【C++】手撕list(list的模拟实现)

目录 01.节点 02.迭代器 迭代器运算符重载 03.list类 (1)构造与析构 (2)迭代器相关 (3)容量相关 (4)访问操作 (5)插入删除 我们在学习数据结构的时候…