Très simple à installer, puis ce qu’il ne nécessite que de télécharger et décompresser un tar.gz. Et aussi simple à utiliser puis ce qu’il ne suffit que de faire des fichiers textes où vous allez détailler les étapes.
Comme vous avez pu le voir dans la démo juste au-dessus, vous pouvez tester vos API et faire des assertions sur le retour JSON.
Mais vous pouvez aussi tester du XML (il supporte les appels SOAP) mais bien sûr aussi de l’HTML si vous voulez tester votre front-end.
La documentation est très fournie et vous montera toutes les possibilités qu’offre cet outil.
Son utilisation est vraiment très simple puis ce qu'il suffit de créer un fichier texte *.hurl
et de l'exécuter via la commande hurl --test *.hurl
.
Il testera tous les fichiers hurl qu’il trouvera dans le répertoire.
GET/POST https://hardly-smart.fr
# Version and status (mandatory if response present)
HTTP 200
# HTTP response headers (
content-length: 206
accept-ranges: bytes
user-agent: Test
# Captures and asserts (optional sections, unordered)
[Captures]
...
[Asserts]
...
# HTTP response body (optional)
{
"type": "FOO",
"value": 356789,
"ordered": true,
"index": 10
}
GET/POST https://hardly-smart.fr
# Version and status (mandatory if response present)
HTTP 200
# HTTP response headers (
content-length: 206
accept-ranges: bytes
user-agent: Test
# Captures and asserts (optional sections, unordered)
[Captures]
...
[Asserts]
...
# HTTP response body (optional)
{
"type": "FOO",
"value": 356789,
"ordered": true,
"index": 10
}
Comme vous le feriez avec Postman ou Insomnia, vous pouvez tester les différents verbes (GET, POST, PUT…). Mais vous pouvez aussi lui envoyer différentes données, telles que des queryparams, un body en formData, mais aussi des fichiers à uploader…
POST {{base_url}}/api/articles
Accept: application/json
X-AUTH-TOKEN: api-key-user-1
MultipartFormData]
field_name: my field value
field_file: file,__PATH__; mimetype
...
POST {{base_url}}/api/articles
Accept: application/json
X-AUTH-TOKEN: api-key-user-1
MultipartFormData]
field_name: my field value
field_file: file,__PATH__; mimetype
...
Vous pouvez tester le code retour ou un ensemble de code retours. Les assertions sont très simples à mettre en place et permettent un grand nombre de choses. Par exemple compter le nombre d'éléments dans un tableau, s’assurer que la valeur est bien un entier, une string… Pour les plus courageux vous pouvez aussi valider les données via une regex.
HTTP 200
[Asserts]
jsonpath "$.errors.title" count == 1
jsonpath "$.errors.title[0]" == "Le titre ne doit pas être vide."
jsonpath "$.id" isInteger
jsonpath "$.file" matches /[0-9a-z]+\.jpg/
jsonpath "$.author.name" isString
HTTP 200
[Asserts]
jsonpath "$.errors.title" count == 1
jsonpath "$.errors.title[0]" == "Le titre ne doit pas être vide."
jsonpath "$.id" isInteger
jsonpath "$.file" matches /[0-9a-z]+\.jpg/
jsonpath "$.author.name" isString
Et toutes ces validations sont disponibles peu importe le retour que vous avez (JSON, XML, HTML…)
Il est aussi possible de “capturer” des informations d’une requête à l'autre. Pratique quand vous voulez récupérer le jeton CSRF de la page avant de soumettre le formulaire, mais aussi si vous voulez modifier/supprimer une ressource API que vous venez de créer.
POST {{base_url}}/api/articles
Accept: application/json
[FormData]
...
HTTP 201
[Captures]
article-id: jsonpath "$.id"
POST {{base_url}}/api/articles/{{article-id}}
Accept: application/json
POST {{base_url}}/api/articles
Accept: application/json
[FormData]
...
HTTP 201
[Captures]
article-id: jsonpath "$.id"
POST {{base_url}}/api/articles/{{article-id}}
Accept: application/json
Comme ce n’est qu’un outil en ligne de commande, il est tout à fait possible de l'utiliser dans votre CI/CD et ainsi automatiser vos tests et votre QA.
Tout est détaillé sur leur documentation.