Magento 2 API-Tests
Ich habe eine API erstellt und möchte Testdateien für diese API schreiben. Wie geht das in Magento 2.3.5? Ich habe den Link verwiesen -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmlund sah auch das Video von einem berühmten russischen Magento-Entwickler. Ich kann die Tests nicht ausführen. Dies ist der Fehler, den ich erhalte, wenn ich den Test ausführe.
Der Befehl, den ich von meinem Magento-Stammverzeichnis aus ausgeführt habe, lautet
vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
Der Fehler ist:
"Dev / tests / api-function / phpunit_rest.xml" konnte nicht gelesen werden.
Außerdem kann ich in PHPStorm die Unit Test-Version nicht konfigurieren. Ich erhalte diesen Fehler.
Wenn ich die Datei autoloader.php verwende, wird folgende Fehlermeldung angezeigt:
Wenn ich den folgenden Befehl ausführe, wird dieser Fehler angezeigt.
vendor/phpunit/phpunit/phpunit app/code/<Directory>
Ich benötige Hilfe beim Einrichten des API-Tests in PHPStorm und des richtigen Arbeitscodes zum Testen einer POST-API
Jede Hilfe wird sehr geschätzt.
Antworten
Schritt 1: Überprüfen Sie, ob die PHP SOAP-Erweiterung installiert ist -> oben in index.php, die für die Bereitstellung der Magento-Site verwendet wird, ersetzen Sie die erste Zeile <?phpdurch <?php phpinfo(); die();Und aktualisieren Sie die Site. Überprüfen Sie, ob die PHH_SOAP-Erweiterung gemäß dem folgenden Screenshot angezeigt wird
Schritt 2: Kopieren Sie gemäß der devdocs-Dokumentation /dev/tests/api-functional/phpunit_rest.xml.dist und phpunit_soap.xml.dist nach /dev/tests/api-functional/phpunit_rest.xml und phpunit_soap.xml.
Schritt 3: Erstellen eines API-Benutzers Gehen Sie zu System/Integration, fügen Sie einen API-Benutzer hinzu und weisen Sie alle Rollen zu (zumindest anfangs bis zum ersten Aufruf).
Überprüfen Sie die obigen Schritte, indem Sie einen Standard-Magento-API-Aufruf in Postman for isntance ausführen. Oder verwenden Sie ein PHP-Skript wie das folgende (die Trägerlinie muss angepasst werden mit your token access key)
<?php
// \Magento\Webapi\Model\ServiceMetadata::getServicesConfig to debug the available webapi services
$params = ['order_id' => null]; foreach ($argv as $arg) { if (preg_match("%^--(.*?)=(.*?)$%", $arg, $m)) {
$params[$m[1]] = $m[2]; } } if (!$params['order_id'])
exit("Specify order id (as --order_id=_ID_ parameter)\n");
$orderId = (int)$params['order_id'];
$url = 'http://magecertif.test/index.php/rest/V1/orders/' . $orderId;
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: Bearer 75koeeydi18xzclhmdib8ou65h9qk8cx' // this is the access token for the API user
)
);
//curl_setopt($ch,CURLOPT_POSTFIELDS, $str);
$result = curl_exec($ch);
curl_close($ch);
Das Ergebnis dieses Skripts sollte wie im folgenden Screenshot aussehen:
Schritt 4:
Copy /dev/tests/api-functional/config/install-config-mysql.php.dist to /dev/tests/api-functional/config/install-config-mysql.php.
Ersetzen Sie Ihre Datenbankdetails und den Host durch Ihre Systemdetails.
Schritt 5: Um PHPStorm einzurichten, sollte die Befehlszeile für den Webapi-Schlüssel funktionieren, wenn Ihr xdebug-Setup für das allgemeine Durchsuchen von Webseiten funktioniert.
Für mich hatte ich anfangs den gleichen Fehler wie Sie. Ich muss die Kommandozeile ändern
php vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
mit
php vendor/bin/phpunit --config /data/macbook/mage-cert2/dev/tests/api-functional/phpunit_rest.xml
Und dann lief meine API schließlich, siehe Ergebnis im Screenshot unten: