Testen ist einfach. Oder die Geschichte eines Fahrrads

Einmal musste ich die Antwort des Servers testen und entschied, dass die Verwendung von schweren Schweizer Messern wie PhpUnit dafür umständlich war. Alles wurde durch die Tatsache kompliziert, dass die Infrastruktur in viele Web-Microservices aufgeteilt war, die wiederum auf verschiedenen Backends (PHP, NodeJS, Python, GO) arbeiteten. Deshalb habe ich beschlossen, eine einfache Klasse zu skizzieren, die sich überraschenderweise als sehr praktisches Werkzeug für Systemakzeptanztests herausstellte.

- Wir müssen sicher sein, dass bei jedem Push unsere gesamte Infrastruktur nicht kaputt geht. Können Sie das tun? -Einfach!


Treffen Sie eXo-Test. Eine kleine PHP-CLI-Klasse, mit der Tests durchgeführt werden können, ist wirklich einfach.



Bild



Installation
GitHub





composer require overvoidjs/exotest:dev-master


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




Angenommen, Sie müssen die Verfügbarkeit von Seiten und die Gültigkeit des Inhalts überprüfen. Stellen Sie beispielsweise sicher, dass der Katalog Produkte enthält. Einfacher geht es nicht:




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

$i = new Exo;

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

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


Führen Sie nun einfach das Skript aus, das Sie über die Konsole erstellt haben:



php test.php


Sie erhalten einen Flip:



1) Erfolg:



Bild



2) Der Antwortstatus ist 200 (Ok), aber der Inhalt wurde nicht gefunden.



Bild



3) Der Antwortstatus ist nicht 200. Der Antwortstatus ist



Bild



gut, aber jetzt stehen wir vor der Aufgabe, die Funktionalität des Systems zu überprüfen. Nochmals - einfach Wasser hinzufügen!



Hier überprüfen wir die Hinzufügung eines Artikels zum Warenkorb:




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


Antworten hervorheben
:




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


:


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




Großartig, die Funktionalität ist fast überprüft. Fast? Nun, fast jedes System verfügt über eine API, die mit vom Client hochgeladenen Dateien funktioniert. Das können wir auch testen:




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


Hier wird die Payload + -Datei per POST-Anfrage an die angegebene Adresse gesendet, als ob sie hinzugefügt worden wäre
 input type="file" name="new_img" 




Das ist alles für jetzt. Ich hoffe, dieses Tool ist vor allem für diejenigen nützlich, die ihren Code noch nicht testen.



All Articles