Есть ли в Python что-нибудь вроде Capybara / Cucumber?

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

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

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

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

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

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

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

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

* EDIT *

Для тех, кто не знаком с 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 эквивалент, но даже просто эквивалент Капибары был бы полезен.

42
задан Ripon Al Wasim 16 April 2015 в 03:55
поделиться

5 ответов

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

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

23
ответ дан 26 November 2019 в 23:42
поделиться

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

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

12
ответ дан 26 November 2019 в 23:42
поделиться

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

9
ответ дан 26 November 2019 в 23:42
поделиться

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

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

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

https://github.com/rlisagor/freshen

7
ответ дан 26 November 2019 в 23:42
поделиться

ОП попросил 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")

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

# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()
3
ответ дан 26 November 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: