27 votes

Est-ce que Python a quelque chose comme Capybara/Concombre ?

Ruby possède une excellente couche d'abstraction au-dessus de Selenium, appelée Capybara, que vous pouvez utiliser pour effectuer des tests fonctionnels, d'acceptation et d'intégration. Il existe également une autre bibliothèque appelée Cucumber qui va plus loin et vous permet d'écrire des tests en anglais.

Les deux bibliothèques sont construites au-dessus de Selenium, et peuvent être utilisées pour tester les principaux navigateurs, mais grâce à leurs couches d'abstraction, il est très facile d'écrire des tests à l'aide de ces bibliothèques (du moins, aussi facile que les tests fonctionnels).

Ma question est la suivante : Python a-t-il quelque chose de ce genre ? J'ai trouvé des Pythonistes faisant des tests fonctionnels avec divers outils mais ...

A) Splinter : n'utilise pas Selenium (et n'a pas de pilote IE)

-EDIT- Il semble que Spliter utilise désormais Selenium (voir les réponses ci-dessous).

B) Alfajor : n'a pas été mis à jour depuis plus d'un an ; semble mort.

C) Selenium (brut) : beaucoup de gens semblent utiliser Selenium directement, mais il semble qu'une couche d'abstraction pourrait le rendre beaucoup plus facile à utiliser.

Alors, quelqu'un connaît-il quelque chose qui ressemble à Capybara, ou mieux encore à Cucumber, pour Python (il n'est pas nécessaire d'utiliser Selenium, mais il faut que cela supporte tous les principaux navigateurs) ?

* EDIT *

Pour ceux qui ne sont pas familiers avec Capybara, il s'agit simplement d'ajouter une API pour qu'au lieu de l'API Selenium normale, vous puissiez faire quelque chose comme ceci :

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

Il est utilisé par Cucumber, qui vous permet d'aller plus loin dans l'abstraction (presque en anglais) :

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 |

J'adorerais avoir un équivalent de Python Cucumber, mais même un simple équivalent de Capybara serait utile.

15voto

D_Bye Points 641

Vous pouvez tester le code Python à l'aide de Cucumber - voir la page Concombre wiki sur github pour plus d'informations.

Si vous souhaitez une solution purement Python, consultez le site suivant Laitue . Je ne l'ai jamais utilisé, mais il y a un article de blog assez utile à son sujet et sur les échardes. ici .

9voto

Jim Stewart Points 6811

Alors que l'OP était satisfait de trouver un équivalent Python de Cucumber, ce qui m'a conduit ici était le titre de la question : un équivalent Python de Capybara. Bien que Cucumber utilise Capybara, Cucumber lui-même est une "solution" complètement différente qui n'est qu'accessoirement liée à Capybara.

Si vous cherchez quelque chose qui ressemble au Capybara sans avoir à faire face au concombre, jetez un coup d'oeil à éclats . Je ne sais pas ce qui était vrai lorsque la question a été postée, mais Splinter est maintenant construit sur Selenium, et supporte d'autres moteurs également (Webkit, PhantomJS, zope.browsertest, et d'autres), et supporte les tests visuels et sans tête.

8voto

Aaron Points 921

Que pensez-vous de Robot Framework ? C'est assez génial. Et avec Selenium2Library, il fonctionne très bien avec SE2. http://robotframework.org/

6voto

Tony S. Points 41

Avez-vous vérifié freshen, ou pea ?

Le pois n'utilise pas la syntaxe du concombre, mais l'auteur dit que c'est plus facile. https://github.com/gfxmonk/pea

Et Freshen essaie de cloner la syntaxe et les fonctionnalités de Cucumber.

https://github.com/rlisagor/freshen

3voto

Michael Herrmann Points 637

L'OP demandait des implémentations Python de Cucumber ou Capybara mais comme Jim Stewart l'a fait remarquer dans sa réponse Le concombre et le capybara sont des choses très différentes. Puisque le titre de la question porte sur le Capybara, c'est ce à quoi je vais répondre.

Je suis l'un des développeurs d'un wrapper Selenium commercial appelé Hélium . Comme Capybara, il offre une API de très haut niveau pour l'automatisation du Web. Par exemple, voici un script qui met à jour votre statut 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")

Les appels à Helium peuvent librement être mélangés avec des appels à Selenium. Par exemple, nous pourrions étendre le script ci-dessus par :

# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X