我已经通过使用webdriver对selenium集线器和节点并行运行测试。此代码在测试运行之前调用。在
cls.driver = webdriver.Remote(
command_executor="http://localhost:4444/wd/hub",
desired_capabilities={
"browserName": "chrome",
})
cls.driver.maximize_window()
cls.driver.get(cls.serverUrl)
p = multiprocessing.Process(target=cls.driver.get(cls.serverUrl), args=())
p.start()
p.join()
通过这种方式,我可以从Eclipse手动执行多个浏览器。不过,我想在一个测试套件中自动完成。但在测试套件中,所有测试都是按顺序启动的。如果有人知道如何进行,那就太好了。在
准备工作
我准备了一些样品测试。这些是一些简单的页面标题检查。我们有一个模块
test_google.py
,其中两个单元测试检查www.google.com
和mail.google.com
的标题:第二个模块是
^{pr2}$test_stackoverflow.py
,它包含一个检查stackoverflow.com
标题的测试:使用空的
unittest
运行测试可以得到:迁移到
pytest
通过
pip
安装pytest
:pytest
支持开箱即用的单元测试,因此我们不需要接触测试,我们可以立即运行它们。试用pytest
跑步者:并行运行测试
这需要
pytest-xdist
插件用于pytest
。通过pip
安装:插件现在已经安装,但默认情况下不会处于活动状态,因此如果您再次运行
pytest
,您不会注意到任何差异。使用numprocesses
键并行化测试执行。这表示为运行测试而保留的进程数,这里我使用auto
值生成与我的计算机具有的cpu相同多的进程:您将看到所有三个测试都由同时打开的三个chrome实例并行运行。每个测试在自己的进程中运行,因此它们不会相互干扰。另外,请注意,
GoogleTests
类的两个测试方法也并行运行,因此这并不局限于不同模块或类中的测试。在与
setup.py
集成当我第一次开始迁移到
pytest
时,我遇到的一个条件是命令python setup.py test
应该仍然可以工作,这样我们就不需要记住额外的pytest
命令来运行测试,因此我们也不必调整所有的实用程序脚本或在集成服务器上构建作业,下面是更新setup.py
脚本的步骤:将以下包添加到测试需求:
向
setup.cfg
添加别名:{cd7>
现在,如果您运行
python setup.py test
,那么将调用正确的运行程序,xdist
插件将在默认情况下处于活动状态。在附加说明
我个人非常喜欢
pytest
,因为它提供的不仅仅是简单的测试执行—您可以将测试作为纯函数编写(不需要包装到TestCase
类中)、收集测试而不执行它们、轻松地只重新运行最近失败的测试,用不同格式的多个报表以及更多的报表来钩住代码覆盖率度量。请参阅official docs了解更多详细信息,它确实值得花时间阅读!在相关问题 更多 >
编程相关推荐