GitHub Classroom Autograde ens permet testejar els repositoris pujats a una tramesa de GitHub Classroom.
Aquest article és per a professors que vulguin testejar automàticament les trameses dels alumnes.
Primer de tot t'has de donar d'alta de Github Education i Github Classroom.
Després podràs crear una Github classroom.
Finalment, pots connectar els alumnes del teu Moodle amb Github Classroom.
Per crear un autograde per a un projecte amb Django cal crear un test amb:
cp .env.example .env ; sudo -H pip3 install -r requirements.txt ; cp .env.example .env || : ; python3 manage.py migrate
MOZ_HEADLESS=1 python3 manage.py test
$(python3 manage.py runserver & sleep 5 ; killall python3) & sleep 2 ; curl localhost:8000/admin/login/
Si hem dockeritzat l'app (veure Django docker) podem posar directament el Run command
sense Setup command
(docker
ja està instal·lat a l'entorn de test de Github Actions):
docker-compose up -d --build ; sleep 5 ; curl localhost:8000/polls/
Per tal que l'autograde surti bé cal advertir els alumnes de que res compleixi:
manage.py
ha d'estar a l'arrel)..env.example
amb les variables d'entorn necessàries per poder fer una migració (es recomana utilitzar DATABASE_URL=sqlite:///db.sqlite3
).test.py
(veure Django test).
En principi, posar en marxa els tests per a un projecte Java Gradle hauria de ser tan senzill com fer gradle test
. Però si es tracta d'un projecte amb Android Studio no ho és tant, ja que necessita les SDK tools de Android i una versió concreta de Gradle.
Aquí tenim una pista de com configurar el workflow de Github Actions: https://github.com/android-actions/setup-android
Per posar el test en marxa, cal deixar buida la casella Setup command.
I posar aquesta línia de test a la casella Run command:
ANDROID_SDK_ROOT=/usr/local/lib/android/sdk ./gradlew test
Si volem disposar d'una BD per als tests, caldrà fer diversos ajustos.
Al Marketplace de Github tenim de la possibilitat d'activar una BD MySQL en el Github Actions, i que es podrà emprar als tests.
La solució implica crear un starter workflow personalitzat dins la nostra organització, que activi la MySQL.
Per crear aquest starter workflow caldrà crear un repositori anomenat .github
dins la nostra Github Organization i dins la carpeta workflow_templates
.
Tens un repositori de plantilla a:
https://github.com/AWS2/php-mysql-world-test-template
Serveix per testejar els exercicis indicats a l'article PHP MySQL.
També podeu aprofondir en la confecció de tests a PHP test.
Per posar-ho en marxa et caldrà:
Add Test -> Run Command
sudo .scripts/init.sh
vendor/bin/phpunit .tests/TitleTest.php
post-test.sh
: és imprescindible ja que apaga els serveis. Si no ho posem, el contenidor que fa el test de Github Actions no es tancarà mai (acabarà fent timeout).src
i aniran veient els tests que superen i la seva puntuació.
Autograding test:
sudo apt update ; sudo apt install -y nodejs ; sudo npm install -g cordova ; cordova platform add browser ; sudo snap remove firefox ; sudo apt install software-properties-common -y ; sudo add-apt-repository -y ppa:mozillateam/ppa ; sudo apt install firefox-esr
cd .test ; npm install ; node 01-login-ok.js
Autograding test:
sudo -H pip3 install -r requirements.txt ; sudo snap remove firefox ; sudo apt install software-properties-common -y ; sudo add-apt-repository -y ppa:mozillateam/ppa ; sudo apt install firefox-esr
pytest --driver firefox .test/test_home.py