web-dev-qa-db-fra.com

Concombre vs Capybara

Quelqu'un peut-il expliquer la différence entre ces deux plates-formes?

Les deux font-ils partie de BDD mais pourquoi devrais-je utiliser l'un ou l'autre, ou les deux ensemble?

46
piermaria

Capybara est un outil qui interagit avec un site Web comme le ferait un humain (comme visiter une URL, cliquer sur un lien, taper du texte dans un formulaire et le soumettre). Il est utilisé pour émuler le flux d'un utilisateur via un site Web. Avec Capybara, vous pouvez écrire quelque chose comme ceci:

describe "the signup process", :type => :feature do
  before :each do
    User.make(:email => '[email protected]', :password => 'caplin')
  end

  it "signs me in" do
    visit '/sessions/new'
    within("#session") do
      fill_in 'Login', :with => '[email protected]'
      fill_in 'Password', :with => 'password'
    end
    click_link 'Sign in'
    page.should have_content 'Success'
  end
end

Concombre est un outil pour écrire des tests lisibles par l'homme qui sont mappés en code. Avec lui, vous pouvez réécrire l'exemple ci-dessus comme ceci:

Scenario: Signup process

Given a user exists with email "[email protected]" and password "caplin"
When I try to login with "[email protected]" and "caplin"
Then I should be logged in successfully

L'interprétation presque en texte brut est utile pour faire circuler les non-développeurs, mais a également besoin d'un code mappé pour fonctionner réellement (les définitions des étapes).

Habituellement, vous utiliserez Capybara si vous testez un site Web et vous utiliserez Cucumber si vous avez besoin de partager ces tests avec des non-développeurs. Ces deux conditions sont indépendantes afin que vous puissiez utiliser l'une sans l'autre ou les deux ou aucune.

PS: dans l'extrait de code, il y a aussi du RSpec. Cela est nécessaire car le concombre ou le capybara ne peuvent pas tester quelque chose. Ils s'appuient sur RSpec, Test :: Unit ou minitest pour effectuer le travail "Réussite ou Echec".

95
Kostas

concombre est un outil BDD qui exprime des scénarios de test dans un langage propre au domaine et lisible par l'entreprise.

capybara est un outil de test automatisé (souvent utilisé) pour les applications ROR.

Sur la page github de capybara, il y a un exemple sur en utilisant capybara avec du concombre .

5
orde

Le concombre est un outil BDD à usage général. Il ne sait rien des applications Web. Les définitions des étapes du concombre appellent donc Capybara afin de tester les applications Web.

4
Andy Waite
|-------------------------------|-------------------------------|
|      Cucumber                 |     Capybara                  |
|-------------------------------|-------------------------------|
| Test cases are more readable  | Test cases are not readable;  |
| and written in plain english  | Capybara also wraps RSpec and |
| text as a DSL                 | you follow the same pattern to|
|                               | write test cases              |
|-------------------------------|-------------------------------|
| Easy to iterate data using    | Not easy to iterate data      |
| tables                        |                               |
|-------------------------------|-------------------------------|
| Cucumber has its own runner   | Uses RSpec runner to execute  |
|                               | tests                         |
|-------------------------------|-------------------------------|
| Default HTML reporter         | No default HTML reporter      |
|-------------------------------|-------------------------------|
| Need to learn cucumber regex  | No such concept               |
| pattern to write step-        |                               |
| definition which is the middle|                               |
| man for test case and script. |                               |
| Btw, the regex pattern is not |                               |
| essential for all cases.      |                               |
|-------------------------------|-------------------------------|
| You can use the native        | (Wrapper)/Built on top of     |
| Selenium-webdriver methods    | Selenium-webdriver Ruby       |
| while using Cucumber; Cucumber| library when used with        |
| is just an additional         | Selenium; it can also be used |
| framework to your generic     | with two other drivers.       |
| automation framework          |                               |
|-------------------------------|-------------------------------|
| Pure BDD framework (In theory | Traditional functional test   |
| BDD sounds great. In practice,| model for end-to-end testing  |
| product owners and developers |                               |
| rarely continue to use BDD)   |                               |
|-------------------------------|-------------------------------|
0
Prashanth Sams