2012-06-12 9 views
9

Ho lavorato con Spock e ho adorato la clausola 'where', che consente di esercitare facilmente il test case con più input e output. Per esempio:C'è una libreria di test Spock-like per Python

class HelloSpock extends spock.lang.Specification { 
    def "length of Spock's and his friends' names"() { 
     expect: 
      name.size() == length 

     where: 
      name  | length 
      "Spock" | 5 
      "Kirk" | 4 
      "Scotty" | 6 
    } 
} 

C'è qualcosa di simile per Python?

+0

Hai trovato qui sotto le risposte utili? –

risposta

3

pytest consente di parametrise a test function:

import pytest 
@pytest.mark.parametrize(("input", "expected"), [ 
    ("3+5", 8), 
    ("2+4", 6), 
    ("6*9", 42), 
]) 
def test_eval(input, expected): 
    assert eval(input) == expected 
2

Se si dispone di più di un paio di test, consiglio un quadro BDD come behave. Si specifica un Gherkin syntax, per esempio (codice dal tutorial collegato):

Scenario: some scenario 
    Given a set of specific users 
    | name  | department | 
    | Barry  | Beer Cans | 
    | Pudey  | Silly Walks | 
    | Two-Lumps | Silly Walks | 

When we count the number of people in each department 
Then we will find two people in "Silly Walks" 
    But we will find one person in "Beer Cans" 

E un codice Python per l'analisi di esso, ad esempio:

@given('a set of specific users') 
def step_impl(context): 
    for row in context.table: 
     model.add_user(name=row['name'], department=row['department']) 

scrittura del codice Python è abbastanza facile, e ci sono numerosi codice di esempio online. La bellezza di questa tecnica è che la tua suite di test è altamente riutilizzabile e può essere facilmente estesa dai non programmatori.

2

No, non c'è. Il che è triste perché Spock è veramente eccellente. Sono stato alla ricerca di un anno e ho riflettuto su cosa sarebbe servito per creare un DSL in Python visto che mi manca così tanto.

comportarsi e lattuga si arriva sintassi stile BDD e modi di dire, ma è necessario mantenere i file step separati che corrispondono ai file di scenario. Ovviamente questo fa schifo quando vuoi fare TDD ma hai la leggibilità di BDD che è ciò che Spock abilita.

Se si desidera anche mock stile Spock quindi Mox è il più vicino che ho trovato. Ma ancora una volta è un cattivo sostituto una volta che sei stato rovinato da Spock.

Problemi correlati