pytest测试框架的分离插件

pytest-splinter的Python项目详细描述


pytest运行程序的拆分插件

加入聊天,网址:https://gitter.im/pytest-dev/pytest-splinterhttps://img.shields.io/pypi/v/pytest-splinter.svghttps://img.shields.io/pypi/pyversions/pytest-splinter.svghttps://img.shields.io/coveralls/pytest-dev/pytest-splinter/master.svghttps://travis-ci.org/pytest-dev/pytest-splinter.svg?branch=masterdocumentation status

安装pytest碎片

pip install pytest-splinter

功能

插件提供了一组fixture来使用splinter 使用pytest进行浏览器测试

固定装置

    < DL>
    浏览器
    获取碎片浏览器。fixture位于session作用域之下,因此浏览器进程启动 每次测试会话一次,但浏览器的状态将是干净的(当前页为空白,cookies为干净)。
    < DL>
    会话浏览器
    浏览器 相同,但生命周期除外。此fixture是会话范围的,因此只能在 整个测试过程结束。如果您想加快您的测试套件的支付速度并减少测试隔离,这将非常有用。
    < DL>
    浏览器实例获取器
    创建浏览器实例的函数。只有当你需要 同时在一个测试中有多个浏览器实例。用法示例:
@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')
    < DL>
    分片硒隐式等待
    要传递给selenium webdriver的隐式等待超时。 fixture从命令行选项splinter implicit wait(见下文)获取值 < DL>
    碎片等待时间
    显式等待超时(通过 wait_for_condition 等待expicit条件)。 fixture从命令行选项splinter wait time(splinter等待时间)获取值(见下文)
    < DL> 夹板转速
    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'

命令行选项

    < DL>
    –分割隐式等待

    Selenium Webdriver隐式等待。秒(默认值:5)。

    < DL>
    –碎片速度

    Selenium Webdriver速度(从命令到命令)。秒(默认值:0)。

    < DL>
    –碎片插槽超时

    用于WebDriver和浏览器之间通信的Selenium WebDriver套接字超时。 秒(默认值:120)。

    < DL>
    –碎片网络驱动程序
    要使用的网络驱动程序名称。(默认:Firefox)。选项:

    • 火狐
    • 遥控器

    有关更多详细信息,请参阅Splinter和Selenium的文档。

    < DL>
    –拆分远程URL 要使用的Webdriver远程URL。(默认值:无)。仅当选定的webdriver名称为"remote"时才使用。

    有关更多详细信息,请参阅Splinter和Selenium的文档。

    < DL>
    –分割会话范围的浏览器

    pytest splinter应该在每个测试会话中使用一个浏览器实例。 选项为"true"或"false"(默认为"true")。

    < DL>
    –出现故障时生成碎片截图

    pytest splinter应在测试失败时拍摄浏览器屏幕截图。 选项为"true"或"false"(默认为"true")。

    < DL>
    –分割屏幕截图目录

    Pytest Splinter浏览器屏幕截图目录。默认为当前 目录。

    < DL>
    –拆分WebDriver可执行文件
    webdriver可执行文件的文件系统路径。由Chrome驱动程序使用。 默认为"无",在这种情况下,shell path变量设置确定可执行文件的位置。

浏览器固定装置

如上所述,browser是通过创建splinter的browser对象而制作的一个fixture,但有一些覆盖。

    < DL>
    就诊
    增加了通过固定设备等待每次浏览器访问的条件的可能性。
    < DL>
    等待条件
    方法复制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项目页面

许可证

本软件在麻省理工学院许可证下获得许可

请参见许可文件

版权所有2014 Anatoly Bubenkov,Paylogic International等。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Tapestry事件动态组件   java将ActionCell添加到GWT数据网格   java组织。冬眠hql。内部的阿斯特。QuerySyntaxException:JPQL自定义查询中的路径“e.id”无效   java在Main方法中调用类   JButton操作中if语句的java问题   java客户端/服务器系统从客户端不准确地上传到服务器   java如何计算数据结构中的相同名称?   JavaSpring:如何处理HTTP状态400?   java如何捕获传递给Groovy脚本的参数?   java FCM:onMessageReceived未调用,即使在向FCM发送消息后通知也未发出?   如何在java中拆分字符串并包含分隔符   java jaxrs响应实体类   java通用地图打印函数   仅配置了java SOAP12,但出现错误“传入的SOAP消息协议版本为1.1”   swing以多种字体将文本写入图像,并使用java包装   java Jersey测试在目标(…)处从主包>NullPointerException运行方法时失败