如何使用--link命令将pytest容器连接到在同一台docker机器上运行的appium容器

时间:2019-06-23 12:11:12

标签: docker appium pytest

我正在容器中运行鸦片。我也可以在容器中运行测试。两者都在同一台docker机器上运行,但是我无法将测试指向appium容器。我尝试使用--link运行测试,但无法正常工作。

使用以下命令运行我的appium容器:

docker run -d -p 32769:4723 --privileged --name appium_server_v1 appium/appium

暴露端口32769供pytest使用

使用主机= 0.0.0.0和端口= 32769达到我想要的功能

我正在使用以下命令运行pytest测试:

docker run -it --link appium_server_v1:appium/appium --name uitests_v1 uitests

uitests是我的图片,其中包含我的测试

我已经用一个Dockerfile构建了它,其内容是:

FROM python:alpine3.7
WORKDIR .
COPY . .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
CMD ["pytest"]

我正在使用Mac OS

当我的测试在本地运行并且appium服务器在docker机器的容器中运行时,我能够运行测试。我正在使用HOST = 192.168.99.100和PORT = 32769

=========================================================================================== test session starts ============================================================================================
platform linux -- Python 3.7.2, pytest-4.3.0, py-1.8.0, pluggy-0.9.0
rootdir: /, inifile:
plugins: metadata-1.8.0, html-1.20.0
collecting ...

这些是pytest日志,此后不会继续执行,并且在appium服务器日志中什么也没有出现

我使用的是带有主机和端口的真实设备,用于通过appium调配器进行adb连接。我希望测试能在真实的设备上运行,而该设备在从本地运行测试时正在运行,而在对测试进行泊坞窗测试时则不在运行。

2 个答案:

答案 0 :(得分:0)

link选项为deprecated。您应该创建一个网络并将容器连接到它:

docker network create mynet

docker container run -d -p 32769:4723 --privileged --network=mynet --name appium_server_v1 appium/appium

docker container run -it --network=mynet --name uitests_v1 uitests

然后您可以在appium_server_v1:4723容器中使用uitests_v1连接到您的appium服务器。

答案 1 :(得分:0)

@michalk所说的解决方案有效。我已经稍微编辑了Docker文件

使用正式的Python运行时作为父映像

从python:alpine3.7

将工作目录设置为/ app

WORKDIR / app

将工作目录设置为/ app

复制。 / app

安装requirements.txt中指定的所有必需软件包

运行pip install --trusted-host pypi.python.org -r requirements.txt

在该容器外部将80端口提供给全世界

80号博览会

在容器启动时运行pytest

CMD [“ pytest”,“ / app /”]

并且我使用命令删除了所有.pyc文件,以使测试在docker容器中正常运行

find . -name "*.pyc" -exec rm -f {} \;