Ohjelmistotuotanto-kurssin esimerkkisovellus web-pohjaiselle Python-sovellukselle. Sovelluksen web-palvelin on toteutettu Flask-kirjaston avulla. Tietokantana on PostgreSQL, jota käytetään SQLAlchemy-kirjaston avulla.
- Asenna PostgreSQL. Tässä voit hyödyntää esimerkiksi Tietokantasovellus-kurssin ohjetta, tai PostgreSQL:n oman dokumentaation ohjetta.
- Asenna riippuvuudet komennolla
poetry install
- Luo projektin juurihakemistoon tiedosto
.env
ja kopioi siihen.env.template
-tiedoston sisältö. AsetaDATABASE_URL
-ympäristömuuttujan arvo siten, että se on muotoaDATABASE_URL=postgresql://...
. Kokeile ennen tätä, että yhteyden muodostus onnistuu terminaalissa komennollapsql <url>
, jossa<url>
on tietokantayhteyden URL - Alusta tietokanta komennolla
poetry run python3 src/initialize_database.py
- Käynnistä sovellus komennolla
poetry run python3 src/run.py
Tietokannan taulut alustetaan src/initialize_database.py-tiedostossa. Jos haluat tehdä muutoksia tietokantaskeemaan, tee muutokset kyseisessä tiedostossa ja suorita muutosten jälkeen komento poetry run python3 src/initialize_database.py
.
Huomaa, että SQL-tietokannan skeemaa ylläpidetään yleensä tietokantamigraatioiden avulla. Tähän sopiva kirjasto on esimerkiksi Alembic.
Testejä varten kannattaa luoda oma tietokanta, koska testien suorittaminen alustaa tietokannan uudelleen. Ota yhteys tietokantaan psql
-komennon avulla ja suorita siellä seuraava komento:
CREATE DATABASE todotest
Korvaa tietokannan nimi haluamallasi nimellä.
Luo seuraavaksi projektin juurihakemistoon tiedosto .env.test
ja kopioi siihen .env.template
-tiedoston sisältö. Aseta DATABASE_URL
-ympäristömuuttujan arvo siten, että yhteys muodostetaan testitietokantaan. Esimerkiksi, jos kehitystietokannan URL on postgresql://localhost/tododev
, on testitietokannan URL postgresql://localhost/todotest
.
Yksikkötestit suoritetaan pytestin avulla. Testit sijaitsevat src/tests-hakemistossa. Testien suorituksessa käytettävät ympäristömuuttujat ladataan .env.test
-tiedostosta pytest.ini-tiedoston konfiguraation mukaisesti. Jokainen testiajo alustaa tietokannan uudelleen src/tests/conftest.py-tiedoston mukaisesti.
Testien suorittaminen onnistuu komennolla poetry run pytest src
.
Hyväksymistestit suoritetaan Robot Frameworkin avulla. Testit sijaitsevat src/tests/robot-hakemistossa.
Käynnistä ensin Flask-palvelin yhdessä terminaali-ikkunassa komennolla poetry run dotenv -f .env.test run -- python3 src/run.py
. Tämän jälkeen voit suorittaa hyväksymistestit toisessa terminaali-ikkunassa komennolla poetry run robot src/tests/robot
. Palvelin käynnistetään siten, että ympäristömuuttujat ladataan .env.test
-tiedostosta.
You are on your own... good luck!
Ennen tuotantoonvientiä Herokuun, tulee requirements.txt
-tiedosto muodostaa riippuvuuksien perusteella. Tämä onnistuu komennolla poetry export -f requirements.txt --output requirements.txt
.
Huomaa, että jokainen tuotantoonvienti alustaa tietokannan uudelleen, jotta tuotantotietokannan skeema olisi aina ajantasalla. Jos tämä ei ole toivottua, poista tämä rivi Procfile
-tiedostosta.