Yii - परीक्षण
जब हम एक PHP क्लास लिखते हैं, तो हम इसे स्टेप बाई स्टेप डीबग करते हैं या डाई या इको स्टेटमेंट्स का उपयोग करके यह सत्यापित करते हैं कि यह कैसे काम करता है। यदि हम एक वेब एप्लिकेशन विकसित करते हैं, तो हम पृष्ठ में काम करने के लिए फॉर्म में परीक्षण डेटा दर्ज कर रहे हैं, जैसा कि हम उम्मीद करते हैं। यह परीक्षण प्रक्रिया स्वचालित हो सकती है।
स्वचालित परीक्षण दृष्टिकोण दीर्घकालिक परियोजनाओं के लिए समझ में आता है, जो हैं -
- जटिल और बड़े
- लगातार बढ़ता जाता है
- विफलता की लागत के मामले में बहुत महंगा है
यदि आपकी परियोजना जटिल नहीं है और अपेक्षाकृत सरल है या यह सिर्फ एक बार की परियोजना है, तो स्वचालित परीक्षण एक ओवरकिल हो सकता है।
टेस्ट की तैयारी कर रहा है
Step 1- कोडप्शन फ्रेमवर्क स्थापित करें। निम्न कोड चलाएँ।
composer global require "codeception/codeception = 2.0.*"
composer global require "codeception/specify = *"
composer global require "codeception/verify = *"
Step 2 - निम्नलिखित चलाएँ।
composer global status
आउटपुट "वर्तमान निर्देशिका को <निर्देशिका>" में बदल दिया गया है। आपको अपने पैट वैरिएबल में '<डायरेक्टरी> / वेंडर / बिन' जोड़ना चाहिए। इस स्थिति में, निम्न कोड चलाएँ -
export PATH = $PATH:~/.composer/vendor/bin
Step 3 - एक नया डेटाबेस बनाएं 'yii2_basic_tests'।
Step 4 - अंदर परीक्षण निर्देशिका चलाते हैं।
codeception/bin/yii migrate
डेटाबेस कॉन्फ़िगरेशन में पाया जा सकता है tests/codeception/config/config.php।
Step 5 - के माध्यम से परीक्षण सूट का निर्माण।
codecept build
फिक्स्चर
जुड़नार का मुख्य उद्देश्य अज्ञात राज्य में वातावरण स्थापित करना है ताकि आपके परीक्षण अपेक्षित तरीके से चलें। Yii एक नियत रूपरेखा प्रदान करता है। Yii स्थिरता फ्रेमवर्क की एक प्रमुख अवधारणा स्थिरता ऑब्जेक्ट है। यह परीक्षण वातावरण के एक विशेष पहलू का प्रतिनिधित्व करता है। स्थिरता वस्तु का एक उदाहरण हैyii\test\Fixture class।
एक स्थिरता को परिभाषित करने के लिए, आपको एक नया वर्ग बनाना चाहिए और इसे yii \ test \ Fixture या yii \ test \ Active \ _pureure से विस्तारित करना चाहिए। पूर्व सामान्य प्रयोजन जुड़नार के लिए बेहतर है, जबकि बाद को विशेष रूप से डेटाबेस और ActiveRecord के साथ काम करने के लिए डिज़ाइन किया गया है।
यूनिट टेस्ट
यूनिट परीक्षण आपको व्यक्तिगत कार्यों के परीक्षण में मदद करते हैं। उदाहरण के लिए, मॉडल फ़ंक्शन या एक घटक वर्ग।
Step 1 - नामक फ़ाइल में एक नई स्थिरता बनाएँ ExampleFixture.php के नीचे tests/codeception/fixtures निर्देशिका।
<?php
namespace app\tests\codeception\fixtures;
use yii\test\ActiveFixture;
class ExampleFixture extends ActiveFixture {
public $modelClass = ‘app⊨’MyUser';
}
?>
Step 2 - इसके बाद, परीक्षण / कूटलेखन / इकाई / मॉडल फ़ोल्डर में एक नई परीक्षा फ़ाइल बनाएँ।
<?php
namespace tests\codeception\unit\models;
use app\models\MyUser;
use yii\codeception\TestCase;
class ExampleTest extends TestCase {
public function testCreateMyUser() {
$m = new MyUser(); $m->name = "myuser";
$m->email = "[email protected]"; $this->assertTrue($m->save()); } public function testUpdateMyUser() { $m = new MyUser();
$m->name = "myuser2"; $m->email = "[email protected]";
$this->assertTrue($m->save());
$this->assertEquals("myuser2", $m->name);
}
public function testDeleteMyUser() {
$m = MyUser::findOne(['name' => 'myuser2']); $this->assertNotNull($m); MyUser::deleteAll(['name' => $m->name]);
$m = MyUser::findOne(['name' => 'myuser2']); $this->assertNull($m);
}
}
?>
उपरोक्त कोड में, हम तीन परीक्षण परिभाषित करते हैं -
- testCreateMyUser,
- testUpdateMyUser, और
- testDeleteMyUser.
हमने सिर्फ एक नया उपयोगकर्ता बनाया, उसका नाम अपडेट किया और उसे हटाने की कोशिश की। हम प्रबंधन करते हैंMyUser yii2_basic_tests डेटाबेस के संदर्भ में मॉडल, जो हमारे वास्तविक DB की पूरी प्रतिलिपि है।
Step 3 - शुरू करने के लिए tests, परीक्षण फ़ोल्डर में जाएं और चलाएं।
codecept run unit models/ExampleTest
यह सभी परीक्षणों को पास करना चाहिए। आप निम्नलिखित देखेंगे -
कार्यात्मक परीक्षण
कार्यात्मक परीक्षण आपको इसमें मदद करते हैं -
- ब्राउज़र एमुलेटर का उपयोग करके एप्लिकेशन का परीक्षण करना
- सत्यापित करें कि फ़ंक्शन ठीक से काम करता है
- डेटाबेस के साथ बातचीत
- सर्वर साइड स्क्रिप्ट पर डेटा जमा करें
अंदर परीक्षण फ़ोल्डर चलाते हैं -
generate:cept functional AboutPageCept
उपरोक्त कमांड बनाता है AboutPageCept.phpपरीक्षण / कोड / कार्यात्मक फ़ोल्डर के तहत फ़ाइल। इस कार्यात्मक परीक्षण में, हम यह जांचने जा रहे हैं कि क्याabout पेज मौजूद है
Step 1 - संशोधित करें AboutPageCept.php फ़ाइल।
<?php
$I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result');
$I->amOnPage('site/about'); $I->see('about');
$I->dontSee('apple');
?>
ऊपर दिए गए कोड में, हमने जाँच की कि क्या हम पेज के बारे में हैं। जाहिर है, हमें पृष्ठ पर 'के बारे में' और 'सेब' शब्द नहीं देखना चाहिए।
Step 2 - के माध्यम से परीक्षण चलाएँ।
run functional AboutPageCept
आप निम्न आउटपुट देखेंगे -