Kuidas teha pärisosade reaalajas reaktorites reaalajas testimist (E2E), kasutades selleks Pythoni, Appiumi ja AWS-i seadmefarmi

See õpetus on samm-sammuline juhend inimestele, kes soovivad oma React Native Androidi rakenduse jaoks läbi viia E2E-teste paljudes füüsilistes seadmetes.

Selleks kasutame AWS-i seadmefarmi.

Minu varasemas kirjutises teemal E2E testimine loomuliku Androidi reaalajas:

Mainisin, et:

Kui soovite rakendust AWS Device Farm käivitada, et testida oma rakendust päris seadmetes, peate kasutama Appium Pythoni. Nad ei toeta Appium JS-i.

Kui te ei tea Pythoni, siis siin on selle kiire õpetus: https://learnxinyminutes.com/docs/python3/

Seadistamine

React Native projekti alustamiseks järgige ametlikku Facebooki juhendit. Valige kindlasti natiivkoodiga hoonete projektid.

Paigaldage appium, appium-arst

lõnga lisamine --dev appium appium-arst

Lisage paketiga.json rakendusega seotud skriptid

Käitage appi-arsti

lõnga jooksma appium-arst

Peate parandama vead, mida prooviarst viskab. Kuid Androidi testimiseks võite ignoreerida kõike, mis iOS-iga seotud (xCode, Carthage).

Käivitage rakendusserver

lõnga jooksma oopium

Võtke pordi teadmiseks, vajate seda hiljem (vaikesadam on 4723).

Pythoni asjade installimine

Installige virtualenv

Virtualenvi installimiseks on paar võimalust.

  1. Anaconda pole installitud: pip install - kasutaja virtualenv
  2. Kui olete installinud anaconda: installige virtualenv

Virtualenvi seadistamine

virtualenv venv
source venv / bin / aktiveeri # Sisene virtuaalsesse keskkonda

Installige sõltuvused

Kuna oleme sisenenud virtuaalsesse keskkonda eelmistest sammudest, lokaliseeritakse kõik meie paigaldatud Pythoni paketid selle projekti virtualenv-is.

Installitavad paketid:

  • Appium-Python-Client: meie Appium klient
  • seleen: meie veebidraiver
  • pytest: Meie proovijooksja
  • toolz: mõned abistaja funktsioonid
pip install Appium-Python-Client seleeni pytest

Salvestage need sõltuvused failis nimega.txt, et saaksime alati tagasi tulla ja neid uuesti installida.

pip külmutamine> nõuded.txt

Põhitesti

Nüüd, kui oleme kõik seadistanud, kirjutame oma esimese testi.

Esimene fail tuleb salvestada kausta: ./__tests__/conftest.py. See seadistab meie Appium'i veebidriveri mõned põhilised initsialiseerimised. Pange tähele, et funktsioon on tähistatud dekoraatori pytest.fixture abil. See võimaldab seda hiljem testifunktsioonide poolt ära kasutada.

See teine ​​fail tuleb salvestada kausta: ./__tests__/test_main.py. See fail kasutab draiverit, mille tegime saidil conftest.py. See kasutab draiveriobjekti, mille võistlusrajatis andis.

Me kasutame driver.implicitly_wait, kuna me ei tea, kui kaua elemendi ekraanile ilmumine võtab. Enne testi ebaõnnestumist ootame maksimaalselt 10 sekundit. Meie test proovib elemendi leidmiseks korduvalt oodata.

Selle põhitestiga kontrollitakse lihtsalt, kas vaade juurdepääsetavusegaabelabel = "testview" on olemas.

Mõned asjad, mida tasub tähele panna:

  • Konfiguratsioonis olev rakenduse tee on teie projekti juuri silmas pidades. Pole testfaili suhtes.

Teil võib tekkida küsimus: “Miks juurdepääsetavuseabel?”. Noh, nii otsime me elemente, kui teeme katseid Appium ja React Native abil. See ühildub ka iOS-i testimisega Appiumis. Väidetavalt on tulevikus olemas testID-tugi, kuid praegu on see soovitatav viis.

Lisame juurdepääsetavuseLabel = "testvaate" meie rakenduse vaate juurele saidil ./index.android.js.

Tehke test

  1. Käivitage emulaator
  2. Käivitage reaalajas loomuliku serveri server: reaalajas käivitamine
  3. lõngaproov
  4. Teie test peaks olema läbitud!

Nupukatse

Lisage järgmine kood kausta ./__tests__/test_main.py.

Lisage nupp, mis suurendab ekraaniloendurit. Teie ./index.android.js peaks nüüd välja nägema selline:

Tehke test. Peaksite nägema, et rakendus klõpsab nupul ise ja loendur peaks kasvama. Teie testid peaksid kõik läbima.

Nüüd, kui oleme kirjutanud paar testi ja oleme neid edukalt oma kohalike masinate emulaatoril käivitanud, proovime neid käivitada AWS-i seadmefarmis.

AWS-i seadmefarm

Uuendage AWS-i testkoodi

Kui me testime AWS-i, peavad soovitud võimalused olema tühjad. Uuendame koodi nii, et saaksime kasutada meie kohalikke masinaid ja AWS-i.

Rakenduse APK loomine

Peame looma tootmise apk, mis laaditakse üles AWS-i:

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

Paki oma testid kokku

Järgige Amazoni ametlikku juhendit, kuidas testida AWS-i seadmefarmi.

AWS-i jooksutestid

  1. Registreerumine AWS-i seadmefarmi
  2. Looge uus projekt
  3. Uue käituse loomine> Laadige üles apk
  4. Testi konfigureerimine> Appium Python> Laadige testpaketi ZIP-fail üles
  5. Valige seadmed
  6. Määrake seadme olek
  7. Vaadake üle ja alustage käitamist> Seadke seadme maksimaalne aeg
  8. Oodake testide algust

Sa oled valmis! Täname, et lugesite ja loodan, et see õpetus on teile abiks olnud!

Selle artikli kaaskood on sellel repo lehel:

AWS-is märkimist vajavad asjad

  • Võimalik, et peate jälgima zip-faili kaustastruktuuri. Vahel oli mul probleeme zip-failiga, mis sisaldas tipptasemel kausta. Seda õpetust kirjutades ei tulnud mul siiski neid probleeme.
  • Veenduge, et Appium-Python-Client oleks AWS-i jaoks õige versioon. Võimalik, et peate madalama taseme muutma versiooniks Appium-Python-Client == 0,20.
  • Selle vea võib saada käsu driver.send_keys puhul: https://github.com/appium/python-client/issues/162. Sel juhul peate alandama seleeni tasemeni == 3.3.1.
  • AWS sulgeb Appiumi serveri iga testi jaoks, nii et Pytest'i kinnitused koos mooduli ulatusega ei tööta. Kõik sisustusmoodulid on nüüd tõhusalt toimivad.