0

Hope Tout le monde va bien.Données de l'appareil de charge pour les tests d'acceptation - Codeception

J'ai un problème. J'ai besoin d'avoir mes montages chargés en db avant d'exécuter le test d'acceptation en codception dans mon application Yii2. voici le détail pour cela.

Cible: Charger les appareils dans la base de données pour pouvoir exécuter des tests d'acceptation.

Problème: En dépit de mon un dans la plupart des efforts, je suis encore je suis incapable d'atteindre cet effet

Voici les données que je suis arrivé à partager avec vous:

commun \ modules \ myCustomModule \ Tests \ modèles d'acceptation de \ \ DashboardCest `` `

class ResumeDashboardCest 
{ 
    public function _before(AcceptanceTester $I) 
    { 
     $I->haveFixtures([ 
      'country' => [ 
       'class' => CountryFixture::className(), 
       'dataFile' => codecept_data_dir() . 'country_data.php', 
      ], 
      'region' => [ 
       'class' => RegionFixture::className(), 
       'dataFile' => codecept_data_dir() . 'region_data.php', 
      ], 
      'city' => [ 
       'class' => CityFixture::className(), 
       'dataFile' => codecept_data_dir() . 'city_data.php', 
      ], 
      'user_group' => [ 
       'class' => UserGroupFixture::className(), 
       'dataFile' => codecept_data_dir() . 'user_group.php', 
      ], 
      'user' => [ 
       'class' => UserFixture::className(), 
       'dataFile' => codecept_data_dir() . 'user.php', 
      ], 
      'status' => [ 
       'class' => StatusFixture::className(), 
       'dataFile' => codecept_data_dir() . 'status_data.php', 
      ], 
      'resume' => [ 
       'class' => ResumeFixture::className(), 
       'dataFile' => codecept_data_dir() . 'resume_data.php' 
      ], 
     ]); 
     // initialize the module first 

     // fill in the login page before performing my main test 
     $I->amGoingTo("Login in My Application"); 

     $I->amOnPage(Url::toRoute('/site/login')); 
     $I->fillField('#loginform-username', 'admin'); 
     $I->fillField('#loginform-password', 'gulabmehak'); 

     $I->click('.btn-success'); // The login button 
     $I->wait(3); // wait for 3 seconds meanwhile bakend processing is complete 
     $I->dontSee('Incorrect username or password.'); 
    } 

    // my test function 
    public function load_HomePage(AcceptanceTester $I) 
    { 
     $I->amOnPage(Url::toRoute('/'.\Yii::$app->params['ModuleName'].'/resume/index')); 

     $I->see(T::t('main', 'My Resumes')); 
     $I->see(T::t('main', 'My Resumes'), 'ul.breadcrumb li.active'); 
    } 
} 

Voici le dispositif de comptage ry modules communs \ \ myCustomModule \ Tests \ \ appareils CountryFixture

class CountryFixture extends \yii\test\ActiveFixture 
{ 
    public $modelClass = 'common\modules\location\models\Country'; // the model for this belongs to another module 

    public function beforeLoad() { 
     parent::beforeLoad(); 
     $this->db->createCommand()->setSql('SET FOREIGN_KEY_CHECKS = 0')->execute(); 
    } 

    public function afterLoad() { 
     parent::afterLoad(); 
     $this->db->createCommand()->setSql('SET FOREIGN_KEY_CHECKS = 1')->execute(); 
    } 
} 

va de même pour le reste des fichiers fixtures mais je les ai éliminé pour la facilité.

Voici les données (données de fixation) Fichier: modules communs \ \ myCustomModule \ Tests \ data \ country_data.php

<?php 
return [ 
    [ 
     'name' => 'Pakistan', 
     'iso' => 'PK', 
     'status' => 1, 
    ], 
    [ 
     'name' => 'China', 
     'iso' => 'CH', 
     'status' => 1, 
    ], 
    [ 
     'name' => 'United States of America', 
     'iso' => 'US', 
     'status' => 1, 
    ], 
    [ 
     'name' => 'Saudi Arabia', 
     'iso' => 'SA', 
     'status' => 1, 
    ], 
    [ 
     'name' => 'Japan', 
     'iso' => 'JP', 
     'status' => 1, 
    ], 
]; 

pour juste au cas où vous avez besoin de mes configurations: commun \ modules \ myCustomModule \ Tests \ acceptance.suite.yml

class_name: AcceptanceTester 
modules: 
    enabled: 
     - WebDriver 
     - Yii2: 
      part: 
       [init, orm, fixtures] 
    config: 
     db: 
      populate: false 
      cleanup: false 

     WebDriver: 
      url: 'http://localhost/myProject/' 
      browser: phantomjs 
      window_size: 1920x1310 
      capabilities: 
       webStorageEnabled: true 

Codeception: 2.2.9 version de l'application Yii2 : 2.0.12 composer: 1.4.2 Aussi j'utilise PhantomJs pour tester

S'il vous plaît laissez-moi savoir de toutes questions. Restez béni.

+0

Pour passer à travers d'autres façons, j'ai essayé de charger directement les appareils en utilisant http://www.yiiframework.com/doc-2.0/guide-test-fixtures.html#loading-fixtures mais je n'ai toujours rien obtenu. J'ai commencé un fil à github et jusqu'à maintenant, son d'aucune aide https://github.com/Codeception/Codeception/issues/4099 – ahmednawazbutt

+0

Les modules spécifiques au cadre sont pour une utilisation avec des tests fonctionnels, pas des tests d'acceptation – sunomad

+0

Je veux tester mon les pages Web. Pour cela j'ai besoin d'écrire des tests d'acceptation – ahmednawazbutt

Répondre

0

Eh bien, je compris une solution basée sur un fil que j'ai commencé à https://github.com/Codeception/Codeception/issues/4099

Je fixtures simplement chargés dans mon test d'acceptation comme je fais dans l'unité mu tests

est la méthode ici, je mis dans ma fichier CEST avant _before() méthode

public function _fixtures() 
{ 
    return [ 
     'country' => [ 
      'class' => CountryFixture::className(), 
      'dataFile' => codecept_data_dir() . 'country_data.php', 
     ], 
     'region' => [ 
      'class' => RegionFixture::className(), 
      'dataFile' => codecept_data_dir() . 'region_data.php', 
     ], 
     'city' => [ 
      'class' => CityFixture::className(), 
      'dataFile' => codecept_data_dir() . 'city_data.php', 
     ], 
     'user_group' => [ 
      'class' => UserGroupFixture::className(), 
      'dataFile' => codecept_data_dir() . 'user_group.php', 
     ], 
     'user' => [ 
      'class' => UserFixture::className(), 
      'dataFile' => codecept_data_dir() . 'user.php', 
     ], 
     'status' => [ 
      'class' => StatusFixture::className(), 
      'dataFile' => codecept_data_dir() . 'status_data.php', 
     ], 
     'resume' => [ 
      'class' => ResumeFixture::className(), 
      'dataFile' => codecept_data_dir() . 'resume_data.php' 
     ], 
    ]; 
} 

le plus drôle est que je ne vois pas les appareils se charger dans ma base de données, mais ce que je peux faire ici est de vérifier dans mon dossier de HAEC savoir si les données sont stockées dans db être avant d'exécuter mes méthodes de test.

J'ai placé ce code dans ma méthode _before()

$I->seeRecord(UserModel::className(), ['username'=>'admin', 'email'=>'[email protected]']); 
    $I->seeRecord(CountryModel::className(), ['name'=>'Pakistan', 'iso'=>'PK']); 
    $I->seeRecord(ResumeModel::className(), ['title'=>'Second Resume', 'created_at'=>'2017-08-15 10:06:06']); 

les lignes ci-dessus me confirment que les appareils sont chargés dans ma db. Maintenant, je peux placer le reste du code pour mon test d'acceptation à ma guise.

Cela peut aider quelqu'un. Restez béni.