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 :

 1def rest: counter
 2
 3    description = get a value after authentication
 4    expected_description = return code 200 and value
 5    url.json = http://localhost:4567/json/counter
 6    return_code = 200
 7    expected = value
 8    expected_type = boolean
 9    expected_data = true
10    path.json = _result => path:$.counter
11    loop.retry = 10
12    loop.between_retry = 1.5
13end
14
15def branch: main
16    counter.get()
17end

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.