Les tests sont faciles. Ou l'histoire d'un vélo

Un jour, j'ai dû tester la réponse du serveur et j'ai décidé que l'utilisation de couteaux suisses lourds comme PhpUnit était fastidieuse. Tout était compliqué par le fait que l'infrastructure était divisée en plusieurs microservices Web, qui à leur tour fonctionnaient sur différents backends (PHP, NodeJS, Python, GO). J'ai donc décidé d'esquisser une classe simple, qui s'est révélée étonnamment être un outil très pratique pour les tests d'acceptation du système.

- Nous devons nous assurer qu'à chaque poussée, toute notre infrastructure ne se brise pas, pouvez-vous le faire? -Facile!


Découvrez eXo-Test. Une petite classe php-cli avec laquelle exécuter des tests est vraiment facile.



image



Installation
GitHub





composer require overvoidjs/exotest:dev-master


<?php 
include_once 'vendor/autoload.php';




Disons que vous devez vérifier la disponibilité des pages et la validité de leur contenu, par exemple, assurez-vous qu'il y a des produits dans le catalogue. Rien de plus simple:




<?php 
include_once 'vendor/autoload.php';

$i = new Exo;

$url = 'http://localhost:7888/catalog/instrumentyi/';

$i->is_ok($url, '<div class="product-card-name">');


Maintenant, exécutez simplement le script que vous avez créé à partir de la console:



php test.php


Vous recevrez un flip:



1) Succès:



image



2) Le statut de réponse est 200 (Ok), mais le contenu n'a pas été trouvé



image



3) Le statut de réponse n'est pas 200



image



Les statuts de réponse sont bons, mais maintenant nous sommes confrontés à la tâche de vérifier la fonctionnalité du système. Encore une fois - ajoutez simplement de l'eau!



Ici on vérifie l'ajout d'un article au panier:




$payload = [
  'product_id'=>'3401',
  'count'=>'1'
];

@$cart_id = $i->post_it('http://localhost:7888/api/cart/add',$payload);

if(is_int($cart_id)){
    echo "API    ...  Ok \n";
} else {
   echo "API    ...  FAIL \n";
}


Mettre en évidence les réponses
:




echo "API    ... \033[32m Ok\033[0m \n";


:


echo "API    ... \033[01;31m FAIL\033[0m \n";




Génial, la fonctionnalité est presque vérifiée. Presque? Eh bien, presque tous les systèmes auront une API qui fonctionne avec les fichiers téléchargés par le client. Nous pouvons également tester ceci:




//  CURL -      
$i = new Exo;

$url = 'https://site.com/api/sameimg';

$payload = [
  'data'=>'data'
];

$post_file_name = 'new_img';
$post_file_path = './new_img.jpg';

$test = $i->post_it_file($url,$payload,$post_file_name,$post_file_path);


Ici, le fichier payload + sera envoyé à l'adresse spécifiée par requête POST, comme s'il était ajouté à
 input type="file" name="new_img" 




C'est tout pour le moment. J'espère que cet outil sera utile, tout d'abord, pour ceux qui ne testent toujours pas leur code.



All Articles