J’ai créé il y a quelques temps de cela un outil en Ruby pour faire des scénarios de tests pour des Webservices de type REST. Il est possible de définir son plan de test facilement avec un petit langage simple. Exemple :

def rest: counter

    description = get a value after authentication
    expected_description = return code 200 and value
    url.json = http://localhost:4567/json/counter
    return_code = 200
    expected = value
    expected_type = boolean
    expected_data = true
    path.json = _result => path:$.counter
    loop.retry = 10
    loop.between_retry = 1.5
end

def branch: main
    counter.get()
end

Pour vérifier les valeurs attendues on peut utiliser du JSONPath, du Xpath ou une regexp. Voici un exemple d’exécution :

$ ./rexpectable -p - ../share/doc/rexpectable/samples/test_counter.rpt 
File : ../share/doc/rexpectable/samples/test_counter.rpt: Run OK
2014-03-31T14:16:00+0200 -> 2014-03-31T14:16:00+0200 = 0.003038732 s
ID | Branch |  Object | Action | Ex. Time | Type | Is Exp | RetCo |   ERC | Ret Val | Exp Val | Status | Raw Ret Data
---+--------+---------+--------+----------+------+--------+-------+-------+---------+---------+--------+-----------------
 0 |   main | counter |    get |    0.003 | json |   true |   200 | [200] |    true |    true |   true | {"counter":true}
 

On définit ce que l’on attend, un code de retour HTTP, un type, une valeur ou encore tester une chaîne de caractère via une regexp.

Il est possible également d’exporter le résultat de l’exécution dans divers formats, tels que :

rexpectable est téléchargeable sur mon GitHub.