Есть ли у Python что-нибудь вроде капибары / огурца? - PullRequest
41 голосов
/ 28 февраля 2012

В Ruby есть замечательный уровень абстракции над Selenium, который называется Capybara, который вы можете использовать для функционального тестирования, тестирования приемки и интеграции. Он также имеет другую библиотеку под названием Cucumber, которая делает этот шаг еще дальше и позволяет вам на самом деле писать тесты на английском языке.

Обе библиотеки построены на основе Selenium и могут использоваться для тестирования на любом крупном браузере, но из-за их уровней абстракции очень легко писать тесты с их использованием (ну, по крайней мере, настолько легко, насколько это возможно при функциональном тестировании).

Мой вопрос: есть ли у Python что-нибудь подобное? Я обнаружил, что Pythonistas выполняет функциональное тестирование с использованием различных инструментов, но ...

A) Splinter: не использует Selenium (и не имеет драйвера IE)

-EDIT- Похоже, что Spliter теперь использует Selenium (см. Ответы ниже).

B) Alfajor: не обновлялся более года; выглядит мертвым

C) Селен (необработанный): многие люди, кажется, используют Селен напрямую, но кажется, что слой абстракции может сделать его намного проще в использовании

Итак, кто-нибудь знает что-нибудь похожее на Капибару или, еще лучше, похожее на огурец, для Python (он не должен фактически использовать Selenium, но должен поддерживать все основные браузеры)?

* РЕДАКТИРОВАТЬ *

Для тех, кто не знаком с Capybara, он просто добавляет API, так что вместо обычного Selenium API вы можете сделать что-то вроде этого:

When /I sign in/ do
  within("#session") do
    fill_in 'Login', :with => 'user@example.com'
    fill_in 'Password', :with => 'password'
  end
  click_link 'Sign in'
end

Используется Cucumber, который позволяет вам дополнительно абстрагироваться (почти на английский):

Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen

Examples:
| input_1 | input_2 | button | output |
| 20 | 30 | add | 50 |

Я ЛЮБЛЮ ЛЮБИМЫЙ эквивалент Python Cucumber, но даже простой эквивалент Capybara был бы полезен.

Ответы [ 7 ]

22 голосов
/ 01 марта 2012

Вы можете протестировать код Python с помощью Cucumber - см. Вики Cucumber на github для получения дополнительной информации.

Если вы хотите получить чистое решение Python, проверьте Салат ,Я никогда не использовал его, но есть довольно полезная запись в блоге об этом и осколок здесь .

19 голосов
/ 27 февраля 2015

A. Огуречный лайк: (английский лайк)

  • Салат (Подход к корнишону) или
  • Веди себя (подход к корнишону) или
  • Robotframework (подход на основе ключевых слов) (Дополнительная информация: RF больше, чем критерии English Like. Его основано на ключевых словах и предлагает множество вспомогательных методов и встроенных библиотек. Отличный eco-sysstem для внешних библиотек. Любой скрипт на python также можно изменять и использовать вместе с RF)
  • Freshen (подход к корнишону) или
  • горох (подход к корнишону) или
  • RedwoodHQ (на основе подходящего ключевого слова) (RedwoodHQ имеет функции, превышающие критерии «англоязычного», и включает в себя следующие функции: основанная на ключевых словах, веб-тестовая среда, поддерживает Python как один из языков и многое другое. Дополнительная информация о RedwoodHQ: Теоретически возможно, что все существующие встроенные библиотеки платформы роботов и все внешние библиотеки тестирования платформы робота или, в этом отношении, любая библиотека python, могут быть вызваны или использованы из этой веб-платформы тестирования с небольшими изменениями)

  • Датчик (подход с использованием огурца): Справочник по питону: (https://gauge -python.readthedocs.io / en / latest / index.html )


Под огурцом может быть слой абстракции, похожий на капибару, который скрывает / группирует многие действия селена


B. Капибара, как: (Абстракция: скрывает / групповое действие)

Например, если щелкнуть элемент, достаточно предоставить команду типа click (locator) вместо работы с raw selenium api, где нужно найти элемент и затем щелкнуть. Еще много таких абстракций существует в опциональных библиотеках ниже

  • Вариант-1 (см. Ниже)
  • Вариант-2 (см. Ниже)
  • Вариант-3 (см. Ниже)
  • Вариант-4 (см. Ниже)
  • Вариант-5 (см. Ниже)
  • Вариант-6: Гелий (от других Ответ / комментарий)
  • Вариант-7: (см. Ниже)
  • Вариант-8: (см. Ниже)
  • Вариант-9: (см. Ниже)
  • Вариант-10: (см. Ниже)
  • Вариант-11: (см. Ниже)
  • Вариант-12: (см. Ниже)
  • Вариант-13: (см. Ниже)

Мое исследование: существует почти полдюжины а. активный, б. зрелые c. развитые варианты.

Python поставляется с различными батареями в комплекте !!


Вариант-1: Selenium2Library

URL-адрес Github: https://github.com/rtomac/robotframework-selenium2library

Developement: Активный

Назначение: одна из многих библиотек robotframework, также может использоваться как «автономная» библиотека для вашей платформы (см., например, ниже для использования).

Мысли:

  • Предоставляет абстракцию над селеном
  • Ввод аргументов для методов в этой библиотеке намного проще. Абстракция, предоставляемая библиотекой, например, скрывает множество ненужных деталей для поиска элементов. Для более подробной информации нужно понимать библиотеку
  • Можно использовать эту библиотеку вне контекста платформы робота как таковую без каких-либо изменений , хотя она может использовать утилиты пакета роботов. (Это ваша домашняя работа для дальнейших экспериментов с этой библиотекой, в этой заметке!)
  • Следовательно, может использоваться как отдельная библиотека для вашей платформы.

Использование:

pip install robotframework-selenium2library

импортируйте в ваш ipython или простую консоль и начните играть например:

>>from Selenium2Library import Selenium2Library
>>start_testing= Selenium2Library()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://www.google.com")
>>.
...so on

Вариант-2: Объекты страниц

URL-адрес Github: https://github.com/ncbi/robotframework-pageobjects

Разработка: InActive (не показывать пробки с последней версией)

Назначение: Одна из библиотек robotframework. Предоставляет абстракцию объекта страницы над Selenium2Library. Может использоваться в качестве автономного для вашей платформы (см., Например, ниже для использования) или может использоваться вместе с роботизированной рамой.

Мысли:

  • Он предоставляет поддержку "абстракции объекта подкачки" поверх библиотеки Selenium2
  • Можно использовать эту библиотеку вне контекста платформы робота как таковую без каких-либо изменений , хотя имогли бы использовать утилиты пакета роботов.(Это ваша домашняя работа для дальнейших экспериментов с этой запиской!)
  • Следовательно, может использоваться в качестве отдельной библиотеки

Использование:

pip install robotframework-pageobjects

например: в ipython или в режиме ожидания:

>>from robotpageobjects import Page
>>start_testing=Page()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://google.com")

Option-3: robotframework-pageobjectlibrary

URL-адрес Github: https://github.com/boakley/robotframework-pageobjectlibrary

Разработка: Активная

Надеемся, Автор поддерживает LTS(Долгосрочная поддержка):)), Скрещенные пальцы !!

Использование:

pip install robotframework-pageobjectlibrary

Мысли:

  • НЕ возможно использовать эту библиотеку вне контекста платформы робота.Незначительное изменение в том, как обрабатывается контекст страницы, помогло бы использовать эту библиотеку вне контекста платформы робота (это ваша домашняя работа, чтобы узнать как!)

Option-4: Splinter

URL Github: https://github.com/cobrateam/splinter

Развитие: Активный

Использование: splinter.readthedocs.org/en/latest/index.html

pip install splinter

На ipython или idle do:

>>from splinter import Browser    
>>browser = Browser()
>>browser.visit('http://google.com')
>>browser.fill('q', 'splinter - python acceptance testing for web applications')
>>browser.find_by_name('btnG').click()

Опция-5: Библиотека SST

URL Github: https://github.com/Work4Labs/selenium-simple-test

Разработка: Функция завершена / Активна

Использование: testutils.org/sst/

pip install -U sst

на ipython или в режиме ожидания:

>>> from sst.actions import *
>>> start()

    Starting Firefox
>>> go_to('http://google.com')
    Going to... http://google.com
    Waiting for get_element

Опция-6: гелий Не с открытым исходным кодом (Коммерческий)

Опция-7: holmium.core

URL Github: https://github.com/alisaifee/holmium.core

Option-8: wtframework

URL Github: https://github.com/wiredrive/wtframework

Option-9: вебиум

URL-адрес Github: https://github.com/wgnet/webium

Опция-10: Элементиум

URL Github: https://github.com/actmd/elementium

Опция-11: saunter

URL Github: https://github.com/Element-34/py.saunter

Использование: saunter

Option-12: webdriverplus

URL-адрес Github: https://github.com/tomchristie/webdriverplus

Использование: webdriverplus

Комментарии: репозиторий не поддерживается, но приличная ссылка

Опция-12: Simple-Pageobject

URL Github: https://github.com/rama-bornfree/simple-pageobject/tree/master/PageObjectLibrary

Комментарии: Простейшая обёртка объекта страницы, построенная на базе selenium2library.Я являюсь владельцем репо


Test-setup:

"Все" библиотеки тестов в варианте 1-13;может быть запущен с использованием любой из следующих структур: Lettuce, Behave, Robotframework или, в этом отношении, любой среды модульного тестирования (например, PyUnit, Nose) ... и т. д.

Обычно используется платформа тестированиядля управления тестовыми примерами, например

  • английские форматы, такие как gherkin, ключевое слово, табличные и т. д. ...
  • сообщение о тестовом прогоне
  • с подключением к CI
  • настройка / разбор тест-кейсов и наборов тестов
  • тегирование тест-кейсов
  • другие функциональные возможности, о которых можно подумать о любой тестовой среде

Что имеет значение , так это то, насколько удобно работать с библиотеками в указанных выше параметрах.

Вариант 5: Что касается SST, то он имеет особенностисама структура, например, она может генерировать отчеты и делать еще много вещей.

Таким образом, определение библиотеки и каркаса в случае SST размыто , в зависимости от степени возможностей, которые вы хотели бы использовать из этого пакета


Some Math for Fun:

Общее количество способов получить хорошие , плохие и ужасные Test-setup =(Тестовый фреймворк И тестовая библиотека + ваш пользовательский код, зажатый между ч / б фреймворком и библиотекой):

7 * 13 = 91 Способ

Выберите лучшую комбинацию (изТестовый фреймворк и тестовая библиотека), который подходит тем, кто в этом нуждается !!

Я бы лично пошел на Robot-framework с Selenium2Library или Robot-framework с некоторой библиотекой pageobject

конечно, я склонен и положительно настроенв моем посте про робот-фреймворк и Selenium2Library

12 голосов
/ 24 июля 2013

В то время как ОП был счастлив найти эквивалент Python Cucumber, меня привел вот вопрос о названии: эквивалент Python Capybara.В то время как Cucumber использует Capybara, Cucumber сам по себе является совершенно другим «решением», которое только случайно связано с Capybara.

Если вы ищете что-то похожее на Capybara без необходимости иметь дело с Cucumber, посмотрите осколок .Я не знаю, что было правдой, когда вопрос был опубликован, но Splinter теперь построен на Selenium и поддерживает также другие движки (Webkit, PhantomJS, zope.browsertest и другие), а также поддерживает визуальное и автономное тестирование.

9 голосов
/ 13 февраля 2014

Как насчет Robot Framework. Это довольно круто. А с Selenium2Library он очень хорошо работает с SE2. http://robotframework.org/

8 голосов
/ 12 ноября 2016

Теперь существует порт самой Capybara для Python:

https://github.com/elliterate/capybara.py

Вы можете найти документацию здесь:

https://elliterate.github.io/capybara.py/

Capybara помогает вам тестировать веб-приложения, имитируя взаимодействие реального пользователя с вашим приложением. Он не зависит от драйвера, выполняющего ваши тесты, и поставляется со встроенной поддержкой Selenium.

7 голосов
/ 27 июля 2012

Вы проверяли освежение или горох?

Горох не использует синтаксис огурца, но автор говорит, что проще https://github.com/gfxmonk/pea

И Фрешен пытается клонировать синтаксис и функциональность Cucumber

https://github.com/rlisagor/freshen

3 голосов
/ 18 февраля 2014

ОП попросил Python реализации Cucumber или Capybara, но, как отметил Джим Стюарт в его ответ , Cucumber и Capybara - это очень разные вещи. Поскольку заголовок вопроса о Капибаре, я отвечу на него.

Я являюсь одним из разработчиков коммерческой обертки Selenium под названием Helium . Как и Capybara, он предлагает API высокого уровня для веб-автоматизации. Например, вот скрипт, который обновляет ваш статус в Facebook:

from helium.api import *
start_chrome("facebook.com")
write(your_fb_email, into="Email or Phone")
write(your_fb_password, into="Password")
click("Log In")
write("Test", into="Update Status")
click("Post")

Звонки на Гелий можно свободно смешивать с звонками на Селен. Например. мы могли бы расширить вышеуказанный скрипт на:

# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...