Magento 2 API-Tests

Aug 25 2020

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

HerveTribouilloy Aug 30 2020 at 18:27

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: