Avant de lire ce chapitre, il est fortement recommandé de lire la documentation Selenium et la documentation PHPUnit. Nous donnons ci-dessous un bref aperçu de l'écriture fonctionnelle. tests dans le framework Yii Principes de base :
Comme les tests unitaires, les tests fonctionnels sont écrits sous la forme de classes XyzTest qui héritent de CWebTestCase, où Xyz
représente la classe testée depuis. PHPUnit_Extensions_SeleniumTestCase
est la classe CWebTestCase Ancestor, nous pouvons hériter de toutes les méthodes de cette classe
La classe de test fonctionnel est enregistrée dans un fichier PHP sous la forme de XyzTest.php Pour plus de commodité, test fonctionnel. les fichiers sont généralement enregistrés dans protected/tests/functional文件夹下
.
la classe de test contient principalement une série de méthodes de test nommées testAbc, où Abc
est généralement le nom de la fonctionnalité à tester, par exemple Par exemple, vous souhaitez tester la fonction de connexion de l'utilisateur, nous pouvons avoir une méthode de test nommée testLogin的测试方法
.
qui contient une série d'instructions de commande pour tester l'interaction entre Selenium RC et le Web application. Il contient également des instructions d'assertion utilisées pour confirmer la réponse que nous attendons de l'application Web
Avant de décrire comment écrire un test fonctionnel, jetons un œil au fichier WebTestCase.php
. généré automatiquement par la commande yiic webapp. Ce fichier définit la classe de base pour toutes les classes de tests fonctionnels WebTestCase:
define('TEST_BASE_URL','http://localhost/yii/demos/blog/index-test.php/'); class WebTestCase extends CWebTestCase { /** * Sets up before each test method runs. * This mainly sets the base URL for the test application. */ protected function setUp() { parent::setUp(); $this->setBrowserUrl(TEST_BASE_URL); } ...... }
WebTestCase
définit principalement l'URL racine de la page de test, qui est suivi de Dans la méthode de test, nous pouvons utiliser des URL relatives pour spécifier la page à tester.
Nous devons également noter que dans l'URL racine du test, index-test.php
est utilisé comme script d'entrée au lieu de index.php
. La seule différence entre les deux est que le premier utilise test.php comme application. fichier de configuration, puis L'auteur utilise main.php
.
Maintenant, nous commençons à parler de la façon de tester la fonctionnalité d'affichage d'un article dans la démo du blog. Écrivez d'abord la classe de test telle qu'elle est écrite. La classe test hérite de ce que nous avons dit ci-dessus. La classe de base WebTestCase mentionnée ci-dessus :
class PostTest extends WebTestCase { public $fixtures=array( 'posts'=>'Post', ); public function testShow() { $this->open('post/1'); // verify the sample post title exists $this->assertTextPresent($this->posts['sample1']['title']); // verify comment form exists $this->assertTextPresent('Leave a Comment'); } ...... }
Tout comme l'écriture de tests unitaires, nous déclarons d'abord les états spécifiques ( luminaires) utilisé par ce test. Ici, nous spécifions l'utilisation du luminaire Post
Dans la méthode de test testShow
, nous utilisons d'abord Selenium RC pour ouvrir l'URL post/1
. L'URL est associée à l'URL racine dans la classe de base (c'est-à-dire http://www.php.cn/
). Ensuite, nous vérifions si le titre de la publication sample1
peut être trouvé dans la page actuelle. Nous pouvons également vérifier si cette page contient le texte <.>.Leave a Comment
Astuce : avant d'exécuter des tests fonctionnels, le serveur Selenium-RC doit d'abord être démarré. Cela peut être réalisé en exécutant la commande <.> dans le répertoire d'installation de votre serveur Selenium. java -jar selenium-server.jar
Ce qui précède est le contenu du supplément 40 de la série de guides officiels du Yii Framework - Tests : tests fonctionnels. Veuillez prêter attention au contenu plus associé à PHP chinois. site Web (www.php.cn) !