[Résolu]Création de test avec SimpleTest

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour

Je cherche actuellement à réaliser des tests avec SimpleTest sur D5. J'ai trouvé quelques tutos et quelques docs, néanmoins je n'arrive pas à faire fonctionner un test qui me parait basique.
Je lui demande tout simple de créer un contenu de type "page", d'y insérer un titre et un corps.

<?php
class MonPremierTest extends DrupalTestCase {

  function get_info() {
    return array(
     
'name' => t('MonPremierTest '),
     
'desc' => t('Test de création d\'une nouvelle page'),
     
'group' => t('PremierTest '),
    );
  }

  function testCreationPage() {
   
//Création de l'utilisateur
   
$admin_user = $this->drupalCreateUserRolePerm(array('access content', 'create content types', 'edit content types'));
   
$this->drupalLoginUser($admin_user);

   //Request
 
$edit = array();
  
$edit['title'] = $this->randomName(5);
   
$edit['body']  = $this->randomName(20);
  
// Post request
  
$this->drupalPostRequest('node/add/page', $edit, 'Submit');
 

 $this->assertText(t('Ajout effectué.'), t('Enregistrement de la node OK.'));
  }

}
?>

-J'ai bien installé et configuré le module.
-J'ai créer dans mon module un dossier tests, avec dedans mon fichier dans lequel je crée mes tests.

Quand je lance le test, il me retourne un message d'erreur en me disant qu'il n'a pas pu attribuer un titre, un contenu et qu'il n'a pas pu valider le formulaire.

Est-ce que quelqu'un à déjà réalisé des tests et aurait une idée de ce qui cloche ?

ps : ci joint les erreurs retournées par simpletest

Fichier attachéTaille
Icône image simpletest_erreur.JPG163.89 Ko
Version de Drupal : 

Hello

Actuellement on trouve pas mal de tutos simpletest pour la v6.x de Drupal mais pas pour la v5.x.

J'ai donc fait un test simple sous D6 qui permet de créer une node, de remplir de champs et de les modifiers.

Voici le résultat:

<?php

 
class MonPremierTest extends DrupalWebTestCase {
  /<
strong>
   *
Implementation of getInfo().
   */
   public static function
getInfo() {
     return array(
     
'name' => t('MonPremierTest '),
    
'desc' => t('Test de création d\'une nouvelle page'),
     
'group' => t('PremierTest '),
       );
 }

  /</strong>
   *
Implementation of setUp().
   */
  function
setUp() {
   
parent::setUp();

    // Création de l'utilisateur, ses droits et login de celui-ci.
 
$permissions = array(
       
'access content',
       
'administer content types',
       
'administer nodes',
       
'administer filters',
      );
   
$admin_user = $this->drupalCreateUser($permissions);
   
$this->drupalLogin($admin_user);
  }
 
  function
testCreationPage() {
   
//Création de la page
   
$edit = array(
    
'title' => '!SimpleTest! test title' . $this->randomName(20),
       
'body' => '!SimpleTest! test body' . $this->randomName(200),
 );
   
// Post de la requète
   
$this->drupalPost('node/add/page', $edit, t('Save'));
 
  
//Test si la node à bien été créée.
   
$node = node_load(array('title' => $edit['title']));
   
$this->assertNotNull($node, 'Node found in database');
   
//Edition de la node via le lien edit
   
$this->clickLink(t('Edit'));
   
$editurl = url("node/$node->nid/edit", array('absolute' => true));
   
$acturl = $this->getURL();
   
$this->assertEqual($editurl, $acturl);
   
//Rerour Info
 
$this->assertText(t('Edit'), 'Edit text is here');
   
$this->assertText(t($edit['title']), 'Hello, the random title');
   
$this->assertText(t($edit['body']), 'test is over, the body\'s still there');

   //edition du contenu depuis l'adresse de la node
   
$edit = array(
   
'title' => '!SimpleTest! test title' . $this->randomName(20),
   
'body' => '!SimpleTest! test body' . $this->randomName(200),
    ); 
   
$this->drupalPost("node/$node->nid/edit", $edit, t('Save'));
   
//Rerour Info
   
$this->assertText(t($edit['title']), 'Hello, the random title');
   
$this->assertText(t($edit['body']), 'test is over, the body\'s still there');
  }
}
?>

En partant de cette base j'ai passé mon fichier sous D5, puis j'ai remplacé toutes les fonctions qui ne portaient pas le même nom.

Voici donc le même test.

<?php

 
class MonPremierTest extends DrupalTestCase {
  /<
strong>
   *
Implementation of getInfo().
   */
  function
get_info() {
      return array(
       
'name' => t('MonPremierTest '),
        
'desc' => t('Test de création d\'une nouvelle page'),
         
'group' => t('PremierTest '),
     );
  }     

  /</strong>
   *
Implementation of setUp().
   */
  function
setUp() {
   
parent::setUp();

   // Création de l'utilisateur, ses droits et login de celui-ci.
   
$permissions = array(
       
'access content',
       
'administer content types',
       
'administer nodes',
       
'administer filters',
      );
   
$admin_user = $this->drupalCreateUserRolePerm($permissions);   
   
$this->drupalLoginUser($admin_user);
   
  }
 
  function
testCreationPage() {
   
//Création du contenu de la page
   
$edit = array(
    
'title' => '!SimpleTest! test title' . $this->randomName(20),
       
'body' => '!SimpleTest! test body' . $this->randomName(200),
 );
   
// Post de la requète
   
$this->drupalPostRequest('node/add/page', $edit, t('Submit'));

    //Test si la node à bien été créée.   
   
$node = node_load(array('title' => $edit['title']));
   
$this->assertNotNull($node, 'Node found in database');
  
   
//Edition de la node via le lien edit
   
$this->clickLink(t('Edit'));
   
$editurl = url("node/$node->nid/edit", array('absolute' => true));
   
$acturl = $this->getURL();
   
$this->assertEqual($editurl, $acturl);

    //Rerour Info
   
$this->assertText(t('Edit'), 'Edit text is here');
   
$this->assertText(t($edit['title']), 'Hello, the random title');
   
$this->assertText(t($edit['body']), 'test is over, the body\'s still there');

    //Création du contenu de la page
   
$edit = array(
   
'title' => '!SimpleTest! test title' . $this->randomName(20),
   
'body' => '!SimpleTest! test body' . $this->randomName(200),
   );
 
//edition du contenu depuis l'adresse de la node
   
$this->drupalPostRequest("node/$node->nid/edit", $edit, t('Submit'));

    //Rerour Info
   
$this->assertText(t($edit['title']), 'Hello, the random title');
   
$this->assertText(t($edit['body']), 'test is over, the body\'s still there');
 
  }
}
?>

J'espère que le temps que j'ai passé à comprendre servira à quelqu'un d'autre :)