如何在 Docker 容器内并行运行 Pytest 测试?

5

在Docker容器内并行运行GUI测试时,我遇到了一个问题。我的测试工具包括:Selenium webdriver + Pytest + Xdist + Chrome。

我使用以下命令来运行测试:

pytest -v -n=4 --headless=True --production=True --browser=chrome --dist=loadfile --junitxml=test.xml

但是所有的测试都失败了。如果我在docker容器外执行相同的操作或者使用1个线程,则一切正常。

那么,我该如何解决这个问题,在docker容器内并行执行测试?非常感谢)

日志中显示:

selenium.common.exceptions.WebDriverException: Message: chrome not reachable   (Session info: headless chrome=73.0.3683.86)   (Driver info: chromedriver=73.0.3683.20 (8e2b610813e167eee3619ac4ce6e42e3ec622017),platform=Linux 4.15.0-46-generic x86_64)

2
你能发布一下你使用的Dockerfile和docker命令吗?另外,当测试失败时是否有任何错误提示? - Mihai
很遗憾,我无法发布Dockerfile,我使用的运行Docker的命令是 "docker run -it --rm <IMAGE> /bin/bash" - Sergei
1个回答

1

尝试使用boxed进程和tx标志: (--tx 3*popen//python=python3.6 --boxed),因此请使用以下命令运行您的测试:

pytest -v --headless=True --production=True --browser=chrome --dist=loadfile --junitxml=test.xml --tx 3*popen//python=python3.6 --boxed

您可以在这个SO答案中找到如何并行运行测试的更多信息。

祝好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接