Test de l'API Magento 2

Aug 25 2020

J'ai créé une API et je souhaite écrire des fichiers de test pour cette API. Comment cela peut-il être fait dans Magento 2.3.5? J'ai référé le lien -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmlet a également vu la vidéo d'un célèbre développeur Magento russe. Je ne peux pas exécuter les tests et c'est l'erreur que j'obtiens si j'exécute le test.

La commande que j'ai exécutée à partir de mon répertoire racine Magento est

vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml

L'erreur est:

Impossible de lire "dev / tests / api-functional / phpunit_rest.xml".

De plus, dans PHPStorm, je ne parviens pas à configurer la version de test unitaire. J'obtiens cette erreur.

Si j'utilise autoloader.php, j'obtiens l'erreur suivante:

Lorsque j'exécute la commande suivante, j'obtiens cette erreur.

vendor/phpunit/phpunit/phpunit app/code/<Directory>

J'ai besoin d'aide pour configurer les tests d'API dans PHPStorm et le code de travail correct pour tester une API POST

Toute aide est grandement appréciée.

Réponses

HerveTribouilloy Aug 30 2020 at 18:27

Étape 1: l' extension PHP SOAP Verifiy est installée -> en haut de index.php qui est utilisé pour servir le site Magento, remplacez la première ligne <?phppar <?php phpinfo(); die();Et actualisez le site, vérifiez que l'extension PHH_SOAP apparaît comme sur la capture d'écran ci-dessous

Étape 2: selon la documentation de devdocs Copiez /dev/tests/api-functional/phpunit_rest.xml.dist et phpunit_soap.xml.dist dans /dev/tests/api-functional/phpunit_rest.xml et phpunit_soap.xml.

Étape 3: créer un utilisateur API Accédez à System/Integration, ajoutez un utilisateur API et attribuez tous les rôles (au moins initialement jusqu'à ce que le premier appel soit effectué)

Validez les étapes ci-dessus en exécutant un appel d'API Magento par défaut dans Postman pour isntance. Ou en utilisant un script php comme celui ci-dessous (la ligne du porteur doit être ajustée avec 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);

le résultat de ce script doit ressembler à la capture d'écran ci-dessous:

Étape 4:

Copy /dev/tests/api-functional/config/install-config-mysql.php.dist to /dev/tests/api-functional/config/install-config-mysql.php.

remplacez les détails de votre base de données et l'hôte par les détails de votre système.

Étape 5: Enfin, pour configurer PHPStorm, si votre configuration xdebug fonctionne pour la navigation générale sur les pages Web, la ligne de commande de la clé webapi devrait fonctionner:

pour moi, j'ai eu la même erreur que vous au départ. Je dois changer la ligne de commande

php vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml

avec

php vendor/bin/phpunit --config /data/macbook/mage-cert2/dev/tests/api-functional/phpunit_rest.xml

Et puis, mon API a finalement fonctionné, voir le résultat dans la capture d'écran ci-dessous: