pytest测试框架的分离插件
pytest-splinter的Python项目详细描述
pytest运行程序的拆分插件
安装pytest碎片
pip install pytest-splinter
功能
插件提供了一组fixture来使用splinter 使用pytest进行浏览器测试
固定装置
- 浏览器
- 获取碎片浏览器。fixture位于session作用域之下,因此浏览器进程启动 每次测试会话一次,但浏览器的状态将是干净的(当前页为空白,cookies为干净)。
- 会话浏览器
- 与 浏览器 相同,但生命周期除外。此fixture是会话范围的,因此只能在 整个测试过程结束。如果您想加快您的测试套件的支付速度并减少测试隔离,这将非常有用。
- 浏览器实例获取器
- 创建浏览器实例的函数。只有当你需要 同时在一个测试中有多个浏览器实例。用法示例:
@pytest.fixturedefadmin_browser(request,browser_instance_getter):"""Admin browser fixture."""# browser_instance_getter function receives parent fixture -- our admin_browserreturnbrowser_instance_getter(request,admin_browser)deftest_2_browsers(browser,admin_browser):"""Test using 2 browsers at the same time."""browser.visit('http://google.com')admin_browser.visit('http://admin.example.com')
- 分片硒隐式等待
-
要传递给selenium webdriver的隐式等待超时。
fixture从命令行选项splinter implicit wait(见下文)获取值
< DL> - 碎片等待时间
- 显式等待超时(通过 wait_for_condition 等待expicit条件)。 fixture从命令行选项splinter wait time(splinter等待时间)获取值(见下文)
-
selenium的速度,如果不是0,则它将在每个selenium命令之间休眠。
用于调试/演示。
fixture从命令行选项splinter speed(见下文)中获取值
< DL> - 碎片硒插座超时
-
网络驱动程序和浏览器之间通信的套接字超时。
fixture从命令行选项splinter socket timeout(见下文)获取值
< DL> - 碎片网络驱动程序
- 要使用的Splinter的Webdriver名称。fixture从命令行选项获取值 碎片网络驱动程序(见下文)。要使pytest splinter始终使用特定的webdriver,请重写fixture 在您的conftest.py文件中:
importpytest@pytest.fixture(scope='session')defsplinter_webdriver():"""Override splinter webdriver name."""return'chrome'
- 碎片远程URL
- 要使用的Splinter的WebDriver远程URL(可选)。fixture从命令行选项获取值 拆分远程url(见下文)。仅当选定的Webdriver名称为"remote"时才使用。
- 分割会话范围的浏览器
-
pytest splinter应该在每个测试会话中使用单个浏览器实例。
fixture从命令行选项splinter session scoped browser(见下文)获取值
< DL> - 分割文件下载目录
- 目录,浏览器将自动将文件下载到该目录 将在浏览过程中体验。例如,当您单击某个下载链接时。 默认情况下,它是一个临时目录。仅Firefox驱动程序支持自动下载文件 现在。
- 碎片下载文件类型
- 要自动下载的内容类型的逗号分隔列表。 默认情况下,它是所有已知的系统mime类型(通过mime types标准库)。
- 拆分浏览器加载条件
- 浏览器加载条件,python函数,该函数应返回true。 如果函数返回false,它将运行几次,直到达到下面的超时值。
- 拆分浏览器加载超时
- 浏览器加载条件超时(秒),在此超时之后 waituntiltimeout将被提升。
- 碎片等待时间
- 浏览器显式等待超时(秒),在此超时之后 waituntiltimeout将被提升。
- 分割firefox配置文件首选项
- Firefox配置文件首选项,一个传递给Selenium的字典 Webdriver的配置文件首选项
- 分割firefox配置文件目录
- 要用作Selenium创建的Firefox配置文件模板的Firefox配置文件目录。 默认情况下,它在pytest_splinter/profiles/firefox中是空的
- 碎片驱动器夸格斯
- webdriver关键字参数,传递给selenium的字典 webdriver的构造函数(在应用firefox首选项之后)
- 碎片窗口大小
- 浏览器初始化时浏览器窗口的大小。窗体中的元组(<;width>;,<;height>;)。默认值为(1366768)
- 碎片屏幕截图
- Pytest Splinter浏览器屏幕截图目录。 这个fixture从命令行选项获取值 分割屏幕截图目录 (见下文)。
- 出现故障时生成碎片屏幕截图
- Pytest Splinter是否应该在测试失败时拍摄浏览器屏幕截图? 这个fixture从命令行选项获取值 出现故障时生成碎片截图 (请参见下文)。
- 分割屏幕截图编码 测试失败时,
- 编码 html 屏幕截图。默认为UTF-8。
- 碎片截图html
- 获取浏览器HTML屏幕截图的函数。默认情况下,它使用给定的路径和 碎片截图_编码 编码。
- 碎片截图
- 函数获取浏览器图像(PNG)屏幕截图。默认情况下,它会调用浏览器。 具有给定路径。
- 分割驱动程序可执行文件
- webdriver可执行文件系统路径。 这个fixture从命令行选项获取值 拆分webdriver可执行文件 (请参见下文)。
- 拆分浏览器类
- 要用于浏览器实例的类。 默认为 pytest\u splinter.plugin.browser
- 分割干净的cookies网址
- 无头碎片
- 在无头模式下运行chrome。作为本书(2017-07)的作者,仅提供未发行的分片主版本。 默认为false。
- 要清除Cookie的其他URL的列表。默认情况下,在为测试准备浏览器的过程中, pytest splinter只清理上一个测试中最后访问的url的cookie,因为它不可能清理 根据设计,通过webdriver协议一次从所有域中获取所有cookie。如果 您知道URL列表,需要清除Cookie的域(例如https://facebook.com rel="nofollow">https://facebook.com )。 如果是这样,您可以重写这个fixture并将这些url放在那里,pytest splinter将访问它们中的每一个,并将 清除每个域的cookies。
命令行选项
- –分割隐式等待
Selenium Webdriver隐式等待。秒(默认值:5)。
- –碎片速度
Selenium Webdriver速度(从命令到命令)。秒(默认值:0)。
- –碎片插槽超时
用于WebDriver和浏览器之间通信的Selenium WebDriver套接字超时。 秒(默认值:120)。
- –碎片网络驱动程序 要使用的网络驱动程序名称。(默认:Firefox)。选项:
- 火狐
- 遥控器
- 铬
-
–拆分远程URL
要使用的Webdriver远程URL。(默认值:无)。仅当选定的webdriver名称为"remote"时才使用。
有关更多详细信息,请参阅Splinter和Selenium的文档。
< DL> - –分割会话范围的浏览器
pytest splinter应该在每个测试会话中使用一个浏览器实例。 选项为"true"或"false"(默认为"true")。
- –出现故障时生成碎片截图
pytest splinter应在测试失败时拍摄浏览器屏幕截图。 选项为"true"或"false"(默认为"true")。
- –分割屏幕截图目录
Pytest Splinter浏览器屏幕截图目录。默认为当前 目录。
- –拆分WebDriver可执行文件 webdriver可执行文件的文件系统路径。由Chrome驱动程序使用。 默认为"无",在这种情况下,shell path变量设置确定可执行文件的位置。
有关更多详细信息,请参阅Splinter和Selenium的文档。
浏览器固定装置
如上所述,browser是通过创建splinter的browser对象而制作的一个fixture,但有一些覆盖。
- 就诊
- 增加了通过固定设备等待每次浏览器访问的条件的可能性。
- 等待条件
- 方法复制Selenium的wait_for_条件,不同的是条件在Python中, 所以在那里你可以做任何你想做的,而不仅仅是执行javascrip通过浏览器。评估脚本。
多个浏览器供您测试
一个测试中可以有多个浏览器。
importpytest@pytest.fixturedefadmin_browser(browser_instance_getter):returnbrowser_instance_getter(admin_browser)deftest_with_several_browsers(browser,admin_browser):browser.visit('http://example.com')admin_browser.visit('about:blank')assertbrowser.url=='http://example.com'
测试失败时的自动屏幕截图
当你的功能测试失败时,知道原因很重要。 当在ContinuOS集成服务器上运行测试时, 无法调试的地方(使用–pdb)。 为了简化,浏览器固定装置有一个特殊的行为, 它在测试失败时截取一个屏幕截图,并将其放入 命名约定与 jenkins插件 。 浏览器页的HTML内容也会被存储,这对于调试HTML源代码非常有用。
创建屏幕截图与pytest xdist插件完全兼容 从节点自动通过通信信道。
如果测试(使用浏览器设备)失败,您应该得到一个屏幕截图文件 在以下路径中:
<splinter-screenshot-dir>/my.dotted.name.test.package/test_name-browser.png <splinter-screenshot-dir>/my.dotted.name.test.package/test_name-browser.html
存储截图的分割截图目录由 fixture和可以通过命令行参数提供,如上所述 在"配置选项"部分。
默认情况下,在测试失败时拍摄屏幕快照是启用的。它是可以控制的 通过 splinter_make_screenshot_on_failure fixture,其中return false 跳过它。也可以通过命令行参数禁用它:
pytest tests/functional --splinter-make-screenshot-on-failure=false
如果截图失败,将发出pytest警告,其中 可以使用 pytest 的 -rw 参数查看
python3支持
python3受支持,请检查最近添加的splinter是否有最新版本。
示例
测试你的测试。py:
deftest_some_browser_stuff(browser):"""Test using real browser."""url="http://www.google.com"browser.visit(url)browser.fill('q','splinter - python acceptance testing for web applications')# Find and click the 'search' buttonbutton=browser.find_by_name('btnK')# Interact with elementsbutton.click()assertbrowser.is_text_present('splinter.cobrateam.info'),'splinter.cobrateam.info wasn'tfound...Weneedto'' improve our SEO techniques'
联系人
如果您有问题、错误报告、建议等,请在 github项目页面