Probar es fácil. O la historia de una bicicleta

Una vez tuve que probar la respuesta del servidor y decidí que usar cuchillos suizos pesados ​​como PhpUnit para esto era engorroso. Todo se complicó por el hecho de que la infraestructura se dividió en muchos microservicios web, que a su vez funcionaban en diferentes backends (PHP, NodeJS, Python, GO). Así que decidí esbozar una clase simple que, sorprendentemente, resultó ser una herramienta muy útil para las pruebas de aceptación del sistema.

- Necesitamos estar seguros de que con cada empuje nuestra infraestructura no se rompa, ¿puedes hacerlo? -¡Fácil!


Conoce eXo-Test. Una pequeña clase php-cli con la que ejecutar pruebas es realmente fácil.



imagen



Instalación
puedes leerlo en GitHub

o aquí



composer require overvoidjs/exotest:dev-master


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




Digamos que necesita verificar la disponibilidad de páginas y la validez del contenido en ellas, por ejemplo, asegúrese de que haya productos en el catálogo. Nada podría ser más fácil:




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

$i = new Exo;

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

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


Ahora simplemente ejecute el script que creó desde la consola:



php test.php


Recibirá un flip:



1) Éxito:



imagen



2) El estado de respuesta es 200 (Ok), pero no se encontró el contenido



imagen



3) El estado de respuesta no es 200 Los



imagen



estados de respuesta son buenos, pero ahora nos enfrentamos a la tarea de verificar la funcionalidad del sistema. Nuevamente, ¡solo agrega agua!



Aquí verificamos la adición de un artículo al carrito:




$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";
}


Resaltando respuestas
Verde:




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


Rojo:


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




Genial, la funcionalidad está casi comprobada. ¿Casi? Bueno, casi cualquier sistema tendrá una API que funcione con archivos cargados por el cliente. También podemos probar esto:




//  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);


Aquí, el archivo payload + se enviará a la dirección especificada por solicitud POST, como si se hubiera agregado a
 input type="file" name="new_img" 




Eso es todo por ahora. Espero que esta herramienta sea de utilidad, en primer lugar, para quienes aún no prueban su código.



All Articles