Python, Appium və AWS Device Farm istifadə edərək real cihazlarda həssas Android-də ucdan uca (E2E) testlər necə aparılır

Bu təlimat, React Native Android tətbiqetmələri üçün müxtəlif fiziki cihazlarda E2E testlərini aparmaq istəyən istifadəçilər üçün addım-addım təlimatdır.

Bunun üçün AWS Device Farm istifadə edəcəyik.

React Native Android üçün E2E testi haqqında əvvəlki məqaləmdə:

Bunu qeyd etdim:

Tətbiqinizi real cihazlarda sınamaq üçün AWS Device Farm-da Appiumu çalıştırmaq istəyirsinizsə, Appium Python istifadə etməlisiniz. Appium JS-i dəstəkləmirlər.

Python ilə yenisinizsə, qısa bir bələdçi: https://learnxinyminutes.com/docs/python3/

konfiqurasiya

React Native layihəsinə başlamaq üçün rəsmi Facebook bələdçisini izləyin. Yerli Kod tikinti layihələrini seçdiyinizə əmin olun.

Appium, Appium-Doctor quraşdırın

İplik əlavə edin - dev appium appium-doctor

Package.json-a apiumla əlaqəli skriptlər əlavə edin

Appium doktorunu çalıştırın

İplik işləyən Appium Doctor

Apium həkiminin atdığı səhvləri düzəltməlisiniz. Bununla birlikdə, Android-i sınamaq üçün iOS ilə əlaqəli hər hansı bir şeyi (xCode, Carthage) görməməzlikdən gələ bilərsiniz.

Appium serverini başladın

İplik işləyən appium

Daha sonra ehtiyac duyacağınız limanı qeyd edin (standart port 4723).

Python şeylərini quraşdırın

Virtual şəbəkəni quraşdırın

Virtualenv quraşdırmanın bir neçə yolu var.

  1. Anaconda quraşdırılmadı: pip install --user virtualenv
  2. Anaconda quraşdırmısınızsa: conda install virtualenv

Virtual şəbəkə qurun

virtualenv venv mənbəyi venv / bin / activate # Virtual mühitə daxil olun

Asılılıqları quraşdırın

Əvvəlki addımlardan virtual mühitə daxil olduğumuz üçün quraşdırdığımız bütün Python paketləri bu layihənin virtual mühitində lokallaşdırılacaqdır.

Qurulacaq paketlər:

  • Appium Python Müştərisi: Apium Müştərimiz
  • Selenium: veb sürücümüz
  • pytest: Test qaçışçımız
  • toolz: Bəzi köməkçi funksiyalar
pip yüklə Appium Python müştəri selenium pytest

Bu asılılıqları Request.txt adlı bir faylda qeyd edin ki, onları istənilən vaxt yenidən quraq.

pip dondurma> requirements.txt

Əsas test

İndi hamımız hazır olduqdan sonra ilk testimizi yazaq.

Bu ilk fayl: ./__tests__/conftest.py ünvanında qeyd olunmalıdır. Bu, Appium veb sürücümüzün əsas başlanğıcını qurur. Funksiyanın dekorativ pytest.fixture ilə qeyd olunduğuna diqqət yetirin. Bu şəkildə daha sonra test funksiyaları tərəfindən istifadə edilə bilər.

Bu ikinci fayl: ./__tests__/test_main.py ünvanında qeyd olunmalıdır. Bu fayl conftest.py-də yaratdığımız sürücüdən istifadə edir. Cihaz tərəfindən çıxarılan sürücü obyekti istifadə olunur.

Driver.implicitly_wait istifadə edirik, çünki ekranda bir maddənin görünməsinin nə qədər vaxt aparacağını bilmirik. Testin uğursuz olduğunu düşünmədən əvvəl maksimum 10 saniyə gözləyəcəyik. Testimiz gözləmə müddəti ərzində elementi dəfələrlə tapmağa çalışacaq.

Bu əsas test yalnız accessibilityLabel = "testview" ilə bir görünüşün olub olmadığını yoxlayır.

Diqqət yetiriləcək bəzi şeylər:

  • Konfiqurasiyadakı tətbiq yolu layihənizin kök qovluğuna nisbətəndir. Test sənədinə nisbi deyil.

Bəlkə də "Niyə accessibleLabel?" Deyə düşünə bilərsiniz. Appium və React Native ilə sınaqdan keçirərkən elementləri belə axtarırıq. Bu, Appium-da iOS testi ilə də uyğundur. Guya gələcəkdə testID üçün dəstək olacaq, amma hələlik bu tövsiyə olunan yoldur.

./İndex.android.js-də tətbiq görünüşünün kökünə accessibilityLabel = "testview" əlavə edək.

Testi başla

  1. Emulatoru başladın
  2. React Native Dev Serverə başlayın: React-Native Start
  3. İplik testi
  4. Testiniz keçməlidir!

Əsas test

Aşağıdakı kodu ./__tests__/test_main.py adresinə əlavə edin.

Ekranda sayğac artıran bir düymə əlavə edək. İndi ./index.android.js belə olmalıdır:

Testi başla. Tətbiqin düyməni öz-özünə vurduğunu görməlisiniz və sayğac artacaq. Testləriniz hamısı keçməlidir.

Bəzi testlər yazdıqdan və yerli kompüterlərimizdəki bir emulatorda uğurla işlədikdən sonra, onları AWS Cihaz Təsərrüfatında işə sala bilərsiniz.

AWS cihaz ferması

AWS üçün test kodunu yeniləyin

AWS-də testlərimizi apardığımızda istədiyimiz xüsusiyyətlər boş olmalıdır. Kodu yerli kompüterlərimizdə və AWS-də çalışdıra bilmək üçün yeniləyək.

Tətbiq APK yaradın

AWS-ə yüklənəcək bir istehsal apk yaratmalıyıq:

  1. cd android && ./gradlew assembleRelease
  2. Fayl: ./android/app/build/outputs/apk/app-release-unsigned.apk

Testlərinizi qablaşdırın

AWS Device Farm üçün testlərinizi qablaşdırmaq üçün rəsmi Amazon təlimatlarına əməl edin.

AWS-də testlər aparın

  1. AWS Cihaz Təsərrüfatı üçün qeydiyyatdan keçin
  2. Yeni bir layihə yaradın
  3. Yeni bir iş> İstehsal apk yüklə
  4. Testi> Appium Python> Test paketinin zip sənədini yükləyin
  5. Cihazları seçin
  6. Cihazın vəziyyətini daxil edin
  7. Çalıştırmayı yoxlayın və başlayın> Cihaz başına maksimum vaxt təyin edin
  8. Testlərin keçməsini gözləyin

Bitirdiniz! Oxuduğunuz üçün təşəkkür edirəm və ümid edirəm ki, bu təlimat faydalı oldu!

Bu məqaləyə əlavə kodu bu repoda tapa bilərsiniz:

AWS haqqında qeydlər

  • ZIP sənədinin qovluq quruluşuna diqqət yetirməli ola bilərsiniz. Bəzən keçmişdə üst səviyyə bir qovluq içində olan bir zip faylı ilə əlaqədar problemlər yaşadım. Ancaq bu təlimatı yazarkən bu məsələlərlə qarşılaşmadım.
  • Appium Python Client-in AWS üçün doğru versiyası olduğundan əmin olun. Appium Python Client == 0.20 səviyyəsinə keçməyiniz lazım ola bilər.
  • Bu səhvi sürücü.send_keys əmri üçün ala bilərsiniz: https://github.com/appium/python-client/issues/162. Bu vəziyyətdə selenyuma endirməlisiniz == 3.3.1.
  • Pytest armaturlarının modul əhatəsi ilə işləməməsi üçün AWS hər test üçün Appium serverini bağlayır. Bütün faralar indi effektiv şəkildə işləyir.