O teste é fácil. Ou a história de uma bicicleta

Uma vez eu precisei testar a resposta do servidor e decidi que usar canivetes suíços pesados ​​como o PhpUnit para isso era complicado. Tudo foi complicado pelo fato de que a infraestrutura foi dividida em muitos microsserviços da web, que por sua vez rodavam em back-ends diferentes (PHP, NodeJS, Python, GO). Portanto, decidi esboçar uma classe simples que surpreendentemente se revelou uma ferramenta muito útil para testes de aceitação de sistema.

- Precisamos ter certeza de que, a cada push, toda a nossa infraestrutura não quebra, você consegue? -Fácil!


Conheça o eXo-Test. Uma pequena classe php-cli com a qual executar testes é realmente fácil.



imagem



Instalação
GitHub





composer require overvoidjs/exotest:dev-master


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




Suponha que você precise verificar a disponibilidade das páginas e a validade do conteúdo delas, por exemplo, certifique-se de que há produtos no catálogo. Nada poderia ser mais 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">');


Agora, basta executar o script que você criou no console:



php test.php


Você receberá uma mensagem:



1) Sucesso:



imagem



2) O status de resposta é 200 (Ok), mas o conteúdo não foi encontrado



imagem



3) O status de resposta não é 200 Os



imagem



status de resposta são bons, mas agora temos a tarefa de verificar a funcionalidade do sistema. Novamente - basta adicionar água!



Aqui verificamos a adição de um item ao carrinho:




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


Destacando respostas
:




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


:


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




Ótimo, a funcionalidade está quase verificada. Por pouco? Bem, quase qualquer sistema terá uma API que funciona com arquivos carregados pelo cliente. Podemos testar isso também:




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


Aqui, a carga útil + arquivo será enviada para o endereço especificado por solicitação POST, como se fosse adicionado ao
 input type="file" name="new_img" 




É tudo por agora. Espero que esta ferramenta seja útil, em primeiro lugar, para quem ainda não testou seu código.



All Articles