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.