Phunit ile WordPress eklenti test ünitesi

Eklenti üzerinde çalışıp yeni işlevsellik getirmeye başladığınızda, mevcut mantığın hasar görmemesini sağlamaktır. Uygun test olmadan, büyük olasılıkla basit iyileştirmeler spagetti kodlamasının kabusu olabilir. Bugünün makalesinde, WordPress eklentiniz için birim testini nasıl kullanacağınızı göstereceğim. Orada birçok test çerçevesi olmasına rağmen, phunit kullanmaya devam edeceğiz çünkü bu WordPress için resmi bir çerçeve. Bir phunit kullanan WordPress birim testi genellikle eklentilere yönlendirilir, ancak belki de temalar için kullanmak istediğiniz zamanlar vardır. Ancak, genel bir kural olarak, temanız eklentiler gibi işlevler sunmamalıdır.
WordPress’teki ayarları, birim testinin özelliklerini kısaca göreceğiz ve son olarak basit eklentiyi test edeceğiz. Not: Bu makale gelişmiş WordPress geliştiricileri içindir. Ancak, acemi veya orta ölçekli bir kullanıcıysanız, burada tartışılan konsept, bir WordPress uygulaması oluştururken perde arkasında neler olduğunu anlamanıza yardımcı olabilir. Bu gönderiye girmeden önce WordPress, PHP ve Phunit hakkında bilgiye ihtiyacınız olacak. Emin değilseniz veya yenilemek istemiyorsanız, aşağıdakileri okumanızı öneririm:
Yeni başlayanlar için WordPress’in geliştirilmesi: Başlangıç
Yeni Başlayanlar İçin WordPress Geliştirme: PHP Öğrenme
Yeni başlayanlar için WordPress Geliştirme: Temalar Oluşturma
Yeni Başlayanlar İçin WordPress Geliştirme: Widget’lar ve Menüler
Yeni Başlayanlar İçin WordPress Geliştirme: Bir Eklenti Oluşturma
Bir phunit ile başlayın
Birim Testi: Aynı sayfada mıyız? Her şeyden daha fazlası, birim testi yazılımınızın kalitesini artırmakla ilgilidir. Amaç, sistematik bir yaklaşım kullanarak hataları azaltmaktır. Uygulamanızın çeşitli alanları için bir dizi test yaparak zaman ve enerji tasarrufu sağlarsınız ve değişikliklerinizden emin olabilirsiniz. Teknik açıdan, bu, işlevlerinizi veya modüllerinizi ayrı ayrı test etmek için ek kodlar yazmakla ilgilidir. Bu, farklı senaryolar, sınır koşulları için giriş verilerinin gönderilmesini ve döndürülen çıktı veya verilerin her zaman beklendiği gibi olmasını içerir. Test edilen fonksiyon diğer sistemlerden kesilir. Bu, bileşenlerin veya işlevlerin birlikte nasıl çalıştığını test ettiğimiz entegrasyon testinden farklıdır. Yeni değişiklikler yaptığınızda, yalnızca önceki testleri yapmanız gerekir. Daha önce başarılı olan şey çalışmaya devam etmeli ve yakında bilmeyeceksiniz.
Başarılı bir birim testinin arkasındaki gizli bir geliştirici olarak size nasıl yardımcı olur, ana uygulamanızda daha küçük ve çok karmaşık olmayan bir işlev veya modül yazmaktır. Bu, belirli bileşenleri ayrı ayrı test etmeyi mümkün kılar. Her işlev bir görev gerçekleştirmeli ve iyi yapmalıdır. Bu şekilde birkaç koşullu ifadeyle yolunuzu hacklemezsiniz veya spagetti kodu ile bitmezsiniz. Kesinlikle daha fazla kod yazıyorsunuz, ancak okunması daha kolay ve daha yüksek kalite kod. Ve bu kuru prensibe uygun (kendinizi tekrarlamayın):
Diyerek şöyle devam etti: “Bilginin her kısmının bir sistemde tek, ölümcül olmayan ve yetkili bir temsili olması gerekir.” Şimdi aynı sayfadayız, başlayalım. Önkoşullar başlamak için üç şeye ihtiyacınız var: phpunit – php kodunu test etmek için kütüphane
Testinizi WordPress kurulumuyla entegre etmek için wp-cli- the wordpress komut satırı arayüzü
WordPress ayarları.
Yukarıdaki ayarlar uzun zaman alacak ve günlük çalışma ortamınızı sarmak istemediğiniz için VVV gibi geliştirme ortamını kullanmanızı öneririm. VVV’nin nasıl kullanılacağına dair ayrıntılar için WordPress’in geliştirilmesi için VVV hazırlamamıza bakın.
Windows kullanıcıları için not: Windows’a Vagrant ve VVV yükleyerek sorun yoktur. Ve Microsoft Windows 10’u kullanıyorsanız, geliştirebilirsiniz – Microsoft Linux (WSL) için Windows Alt Sistemini serbest bırakır, böylece artık Windows’ta Ubuntu bash olabilir. Bu, Windows’taki tüm orijinal Linux komutlarını (neredeyse) çalıştırmanıza ve Windows sisteminizdeki dosyalarla etkileşime girmenize olanak tanır. Mac ve Linux kullanıcılarının her zaman entegre bir kabuğa sahipler. WSL’yi yalnızca gerçekten işe yaradığını kanıtlamak için kullanacağım ve artık kabuk almak için ayrı bir VM yüklemenize gerek yok. WSL’yi ayarlayabilmeniz bu şekilde.
Geliştirme iş akışım, Linux için Windows Alt Sistemlerinde Vagrants ve VVV ile NetBeans kullanıyor. Bu bana ana sistemimdeki NetBeans ile geliştirebileceğim ve hata ayıklayabileceğim ve VVV sanal ortamını kullanarak testler ve sunucular çalıştırabileceğim iyi bir iş akışı veriyor. Ana bilgisayar ve konuk sistemi arasında her şey otomatik olarak senkronize edilir. Böylece NetBeans veya ev sahibimdeki herhangi bir editör kullanarak yazdığım her test de VM ile senkronize ediliyor. Ayrıca eklentilerimi ve temalarımı WordPress ayarlarının dışında tutuyorum ve Vagrant’taki CustomFile yapılandırmasını kullanarak VVV WordPress örneği hedefine yüklüyorum. Bu, Git’i (kontrol sürümünü) gereksiz WordPress çekirdek dosyalarını senkronize etmek zorunda kalmadan kullanmama izin veriyor. İşte ayarlarımın gösterimi:
Eklentiler ve temalar, WordPress (ana bilgisayarda) dışındaki klasörlerde bulunur ve aşağıdaki gümrük dosyası yapılandırmasını kullanarak VM’de yüklenen WordPress Hedefinde yayınlanmıştır:
GIST RAEWRITES/985573A774713EF6E4B0917F7B58496B
Üniteyi test etmek için VV Create kullanılarak yapılan basit bir eklenti, Phunit-Demo-Plugin ve WordPress “Test.dev” örneği ile çalışacağım. Ayrıca, WordPress dışındaki eklentilerle birlikte NetBeans’a Test.deV projesini yüklemek için aşağıdaki gibi eklenti klasörüne sembolik bir bağlantı yaptım:

GIST RAEWRITS/F255434CF8D3CFC1E1AFC3D94ADB78
Not: Ana makineden sembolik bir bağlantı yapmanız gerekir:

Linux/Mac için Ln -s hedef link_name kullanın
Windows için, MKLink /D Link_Name Hedefini çalıştırmak için komut satırını kullanın
VVV ile WordPress eklentiniz için bir phunit hazırlayın, gerekli tüm araçlara sahibiz: PHP, PHPIT, WP-CHLI vb. WP-CHLI ayrıca, WordPress Core dosyasında test yapmak için yararlı olan test çerçevesi için temel bir yapılandırma yükler. Eklentiler için bunu genişletmek birkaç adım daha gerektirir. Üç komuta yol açar:> $ cd/srv/www/wordpress-installation
> $ wp iskele eklenti testleri
> $ sh wp-content/eklentileri/your_plugin/bin/install-wp-tests.sh

Phunit, WordPress veritabanına girer, bu nedenle en iyisi yeni bir kurulum kullanmak veya mevcut olandan yedekleme yapmaktır. Söylemeye gerek yok, üretim ortamınızda çalışmayın. VM Linux’ta çalışırken klasöre dizin olarak başvuracağım. Bunu ayrıntılı olarak inceleyelim. WP-CHLI El Kitabına da başvurabilirsiniz. Adım 1 phunit’i WordPress eklentinizle ayarlamak için, vagrant örneğinizi bir vagrant ile başlatın ve ardından bir SSH vagrant ile SSH’ye başlayın. Girdikten sonra WordPress kurulum kök dizininize gidin.
Benim durumumda, bir wordpress.dev kurulum testi> $ cd/srv/www/test/htdocs/
Adım 2 Eklentiniz (ana makinenizden) WP-Contents Dizini’nde bulunmalıdır. Eklentiler için birim testini yapılandırmak için, WP-CLI iskelesi komutunu aşağıdaki gibi kullanmamız gerekiyor: WP İskele Eklentileri Your_plugin> $ WP İskele Eklentisi Testleri Phurapit-Demo-Plugin
Bu sadece oldu:
Şimdi eklenti dizininizi kontrol ederseniz, bazı ek dosyalar göreceksiniz, en önemli şey testin testinde. Phunit, test dizini altında bulunan herhangi bir testi (test ile başlayan dosyalar) otomatik olarak çalıştırır. Otomatik keşifler Phunit.xml aracılığıyla gerçekleşir, bu da testi bulan phunit’e ve ayarların nasıl olduğunu anlatan ana dosya tezgahıdır. Test yapılırken, Phunit bunu test ortamımız için kullanacaktır. İşleyen bir DB örneği kullanmak istiyorsanız, rezerve ettiğinizden emin olun. WP iskele komutu tarafından da yapılan “bin/” altında bulunan yükleme-wp-tests.sh komut dosyasını çalıştırmamız gerekiyor: Bash eklenti_dir/bin/install-wp-tests.sh db_name db_user db_password db_host sürüm
DB_NAME test veritabanının adıdır (tüm veriler silinecektir!)

db_user bir mysql kullanıcı adıdır

db_pass bir mysql kullanıcı şifresidir

DB_HOST bir ana sunucu MySQL’dir

Sürüm WordPress sürümüdür
> $ Bash Bin/Install-WP-Tests.sh WordPress_Test Kök Yerel Host Son
Adım #4 Her şeyin doğru yüklenip yüklenmediğini test etmek için tek yapmanız gereken Phunit komutunu çalıştırmaktır. Daha önce oluşturulmuş olan test-sample.php test dosyalarına örnekler yürütülecektir. > $ phunit
WordPress için Bir Birim Testi Yazın Testte yer alan test-sample.php’yi görürseniz, örneklem sınıfının phunit_framework_testcase değil wp_unittestcase genişlettiğini göreceksiniz. Bunun nedeni, WordPress’in özel WordPress işlevselliği sunan ve phunit_framework_testcase üzerine inşa edilen kendi test kütüphanesi ile gönderilmesidir. WP_unittestCase ile, testle başlayan her yöntem otomatik olarak çalıştırılacaktır. En iyi phunit’i gerçekleştirdiğimizde, test_sample () Test_ ile başladığı ve doğru olduğunu vurguladığı için yürütülür.
Kendi testlerimiz için wp_unittestcase kullanma şeklimizdir: wp_unittestcase bize phunit, wordpress test ifadeleri tarafından sağlanan ifadelerin yanı sıra nesneler, yardımcı programlar ve özel ifadeler fabrikaları verir
Hatalar için ifade
$ this-> assertwperror ($ gerçek, $ mesaj)

$ this-> assertnotwperror ($ gerçek, $ mesaj)

$ this-> assetixreror ($ gerçek, $ mesaj)

$ this-> assertnotixrerror ($ gerçek, $ mesaj)

Koşullu etiketler için WP_Query’yi test etmek için ifade
$ this-> assertquerytue ($ args)
Örneğin $ this-> assertQueryTue (‘Is_single’, ‘IS_FEED’) IS_SINGLE () ve IS_ED () mezun olmak için doğru olmalıdır. WordPress Object Factory Factory, yayınlar, taksonomi, kullanıcılar vb. Yapmayı çok kolaylaştırır. Nesneler oluşturmak için aşağıdaki üç yöntemi kullanırlar:
Create () – oluşturulan nesnenin nesne kimliğini döndürür
Create_and_get () – Tüm nesneleri oluşturma ve döndürme
Create_many ($ count) – $ sayımına dayalı birçok yazı yapın
Bir kullanıcı oluşturmak ve bir kullanıcı kimliği almak için sadece-$ user_id = $ this-> factory-> user-> create (); Veya belirli bir WordPress rolüne sahip kullanıcılar oluşturmak için $ user_id = $ this-> factory-> user-> create (array (‘rol’ => ‘yazar)); Diğer fabrika türleri arasında yayınlar, ekler, yorumlar, kullanıcılar, terimler, kategoriler, etiketler, bloglar, ağlar bulunur. Nuancedesignstudio/EBA9D9D92DAEEE8CDC233BE15D5BD46 kullanan fabrika örnekleri
Ek WordPress Trac Setup () ve WP_unittestCase’de ek WordPress Trac Setup () ve Setdown () ‘da, Setup Setup () ve RegleDdown () Purapit ile kullanılabilen WP_UNITESTCase () sunar. Yırtılma ile WP_unittestCase, test yöntemiyle değişmiş olabilecek WordPress durumunu yeniden düzenleyecektir. Ve bu kurulum önbellek temizliğini işleyecek ve küresel değişkenleri yeniden düzenleyecektir. Kullanmak için, bunları parent :: setup () veya parent :: yusultme () ile arayın: örneğin:
NüansedSignstudio Gist/59649ad68b530003859f7fb66e735681 yüklenmesi
WordPress Testi, web sitenizin kök sayfasında çalışır. Farklı sayfalarda testler yapmak için bunu yapmasını talimat vermelisiniz. Örneğin, Testi Yönetim Düzenleme Ekranında çalıştırmak için:
NüansedSignstudio GIST/E04A9D03F02B11D6DB1CF4EABDB9B3F yüklenmesi
Belirli bir URL’ye giderek test etmek istiyorsanız, $ this-> go_to ($ url) kullanabilir ve ardından AssertQueryTue ile test edebilirsiniz:
Yükleme Nuancedesignstudio GIST/556925A3419E375E256162B9745F468
Eklentimizi test edin (nihayet!) Bu bilgileri kullanalım ve gösteri eklentimiz için bir dizi test yazalım. Aşağıda, yeni kullanıcı türü “editörü” oluşturulduğunda ek kullanıcı meta öğeleri ekleyen Phunit-Demon-Plugin’e bir bağlantıdır. Ayrıca, yöneticilerin ve kullanıcıların değiştirmesi için profil ekranında kullanıcının meta’sını görüntüler. Test dizininden test-sample.php’yi silerek başlayın ve yeni bir dosya, test-phpunit-demo-plugin.php oluşturun. Not: Testimi ev sahibimdeki Netbeans üzerine yazacağım ve VVV örneğinde bir phunit ile çalıştıracağım. Tüm değişiklikler iki sistem arasında otomatik olarak senkronize edilecektir. Bu şekilde NetBeans ile Xdebug kullanarak otomatik yerleşim, kod referansları ve hata ayıklamadan yararlanabilirim. Şimdi eklentilerimiz için bir dizi test yazalım. Burada kullanıcıları “yazar” rolünü üstlenir ve Meta anahtarının yapılmadığını kontrol ederiz.
Nüansedesignstudio GIST/B5300D8E4CB6FA3DDDC8B84B8C39D2D6 yüklenmesi
Bir phunit kullanarak bir test yaptığınızda (ayrıntılı çıkış için bir phunit -Debug kullanıyorum) test geçmelidir:
Şimdi, kullanıcıları “editör” rolüyle yaparak bir hata testi yapalım, ardından kullanıcının tercih edilen_browser için meta değerini boş bir dize ile karşılaştıralım.
Bir phunit çalıştırırken test başarısız oldu.
Not: İfade başarısız olduğunda, başka bir test yapılmaz. Bu davranışı Phunit.xml’de değiştirebilirsiniz. Bunu düzeltmek için, meta değerinin boş olmadığını veya “Chrome” için bir dize karşılaştırması yapıp yapmadığını test edebiliriz. Buna ek olarak, testi iki işleve ayıracağız – kullanıcıları “editör” rolü olmayan ve bunlar olmadan test etmek için. Bu şekilde, ifadeyi ayırarak, göründüğünde bir hata bulmak için iyi bir modelimiz var. Nuancedesignstudio/16910386a3d9f2c37051cc5b6b6b6b677989
Eklentimizde geri veya öncelikli çağrılar test ederek, varsayılan değerden farklı öncelik değerleri ile user_register’in eylemlerinin kullanımı için çağrıları geri ekliyoruz. kanca. Öncelik olarak başarısız olan testler 10’dan fazla olmalıdır
Testi 10’dan büyük öncelik muayenesi ile geçti

Testler Test Formlarının Teslimatı Tercih Edilen_Browser alanlarının kullanıcı profilinden doğru bir şekilde güncellenip güncellenmediğini, posta değişkenini taklit etmeliyiz ve daha sonra kullanıcı metasını güncelleyen yöntemi çağırmalıyız. Bu tek başına bir testtir. Eklentimizin, profil formunun doğru gönderilip gönderilmediği gibi diğer sistemlerle değil, meta güncelleyen işlevini önemsiyoruz. Meta değerini güncelledikten sonra başarısız olan testler
Tercih Edilen_Browser’ın Opera’ya güncellendiğini karşılaştırarak bir test
İşte bu yazıdaki test için eksiksiz bir kod:

NüceDesignstudio/4A8Bee5D4F1DFD2B78D3F6976E2C29BBB yüklenmesi

WordPress’te gerçek dünya ünitesi testlerinin örnekleri, nesne yönelimli yapı kullanan basit yönetici eklentileri için yazdığım testlerden bazıları. Not: TestDUbles phunit’i sınıfsız bir eklentide kullanmak için, ad alanını ve Php 5.3 veya daha yüksek olanı kullanmanız gerekir. Bazı daha fazla test örnekleri için bkz. WordPress Core için test

WooCommerce Birimi Testi
Ajax isteği için test

Wordpress Ateş Alma Çerçevesi

WordPress temalarını test etmek WordPress temasını test etmenin basit yolu, tema birimi test verilerini kullanmaktır. Nasıl yöneteceğimizi açıklayan iyi bir makalemiz var. Temanız eklentiler gibi işlevsellik sağlar veya Phunit’i kullanmak istiyorsanız, Tom McFarlin’in temel tema testini görebilirsiniz. Bunu nasıl yönettiğiniz, temanızın yapısına bağlı olacaktır. Test tabanlı geliştirme (TDD) TDD, birim testinin önce yazıldığı bir yazılım tasarım paradigmasıdır ve daha sonra testin geçmek için kod yazılır. Fikir başarısız bir birim testi yazmak ve ardından testi geçmek için bir kod yazmaktır. Tüm kayıp işlevsellik eklenene kadar döngü devam eder. Her yinelemede, kod değişim olmadan yeniden düzenlenir. Buradaki anahtarı geliştirdiğinizde TDD kullansanız da bir test yazmadığınız. Daha fazla eklenti birimi testi alarak, bu makalenin WordPress’te bir phunit testi başlatmanıza yardımcı olduğunu umuyorum. Testlerinizi Gulp veya Grunt gibi görev koşucularını kullanarak otomatikleştirmeyi de görebilirsiniz. Son olarak, WordPress için en iyi uygulamayı kullanarak testi yazmanıza yardımcı olacak WordPress Trac’ı takip edebilirsiniz. Ek kaynaklar

https://make.wordpress.org/cli/2013/02/19/plugin-unit-tests/http://wordpress.tv/?s=unit+Test

Introduction to WordPress unit testing

https://jtreminio.com/2013/03/unit-testing-tutorial-part-5-mock-thods-and-overring-constructors/
Umarım eklenti testi ile ilgili bu makale sizin için yararlıdır!Kod hakkında bir sorunuz varsa, lütfen aşağıdaki yorumları sorun!
Etiket:
Test Ortamı

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir