Pytest webdriver fixture无法内省一些选项

时间:2018-02-22 16:37:13

标签: python selenium pytest

我的框架目前只有一个conftest.py文件,其中包含一个名为browser的夹具,它将webdriver对象返回给测试。我们最近尝试在_generate_configuration_中实现 metafunc.parametrize ,以便在browserstack上测试跨浏览器和跨平台,并遇到了问题。当在ui测试开始时调用浏览器fixture时,它根据metafunc.parametrize方法不知道测试运行的当前浏览器/ os /版本。

这里可以找到一个很好的例子,但是我喜欢用夹具处理webdriver对象的想法,因为当它与yield语句超出范围时,处理webdriver是多么容易。它还会干掉代码:https://qxf2.com/blog/selenium-cross-browser-cross-platform-pytest/

1 个答案:

答案 0 :(得分:0)

作为固定装置的Webdrivers是我强烈推荐的一种很好的方法,特别是因为一旦你的测试完成,你就会得到免费的拆解和driver.quit()。如果您的驱动程序要处理不同的版本/浏览器,我强烈建议您执行以下操作:

  1. 创建包含针对不同浏览器/版本的DesiredCapabilities的运行配置字典
  2. 如果您希望每次都针对所有配置测试所有内容,请配置参数化测试生成以迭代所有运行配置
  3. 如果您希望能够定位特定的参数,请在conftest.py中为--run-configuration添加一个命令行参数,该参数映射到配置中所需的DesiredCapabilities。
  4. 编写一个名为desired_capabilities(scope = session)的夹具,读取config.getoption(' - run-configuration')并将相关的DesiredCapabilities传递给驱动程序夹具中的webdriver调用。