Dalam pengembangan Python modern, menjaga kompatibilitas di beberapa versi Python sangatlah penting, terutama untuk perpustakaan dan alat yang menargetkan basis pengguna yang beragam. Di sini, kita mempelajari cara menggunakan Tox dan Nox, dua alat canggih untuk otomatisasi pengujian Python, untuk memvalidasi proyek di berbagai versi Python. Dengan menggunakan proyek konkret sebagai contoh, kita akan memandu penyiapan pengujian multi-versi, mengelola dependensi dengan Puisi, dan menggunakan Pytest untuk pengujian unit.
Mengapa Mengotomatiskan Pengujian Multi-Versi?
Mengotomatiskan pengujian di seluruh versi Python memastikan proyek Anda tetap kuat dan andal di beragam lingkungan. Pengujian multi-versi dapat:
Tangkap masalah kompatibilitas sejak dini. Memberikan keyakinan kepada pengguna bahwa paket Anda berfungsi pada versi Python pilihan mereka. Sederhanakan proses pengembangan dengan mengurangi pengujian manual. Apa itu Tox dan Nox? Tox: Alat canggih yang dirancang untuk mengotomatiskan pengujian di lingkungan terisolasi untuk beberapa versi Python. Ini bersifat deklaratif, dengan konfigurasi yang ditulis dalam file ini, sehingga memudahkan pengaturan alur kerja standar. Nox: Alternatif yang lebih fleksibel yang menggunakan skrip Python untuk konfigurasi, memungkinkan alur kerja yang dinamis dan dapat diprogram. Ini didasarkan pada file konfigurasi kode python, sehingga lebih kuat daripada Tox untuk konfigurasi proyek yang kompleks.
Kedua alat tersebut bertujuan untuk menyederhanakan pengujian di beberapa versi Python, namun pendekatannya membuatnya cocok untuk kebutuhan yang berbeda.
Pengaturan Proyek: Contoh Praktis
Mari kita siapkan proyek bernama tox-nox-python-tests untuk mendemonstrasikan integrasi Tox, Nox, Poetry, dan Pytest. Proyek ini mencakup fungsi penjumlahan dan pengurangan sederhana, yang diuji pada Python versi 3.8 hingga 3.13.
1. Struktur Direktori
Berikut struktur proyeknya:
tox-nox-python-tests/ ├── tox_nox_python_tests/ │ ├── __init__.py │ ├── main.py │ └── kalkulator.py ├── tes/ │ ├── __init__.py │ └── tes_kalkulator.py ├── pyproject.toml ├── tox.ini ├── noxfile.py ├── README.md 2. Fungsi Inti
Modul kalkulator berisi dua fungsi dasar:
kalkulator.py def add(a, b): “””Mengembalikan jumlah dua angka.””” return a + b def pengurangan(a, b): “””Mengembalikan selisih dua angka.””” return a – b
Kami akan menggunakan pytest untuk pengujian unit (dengan pengujian berparametri):
test_calculator.py impor pytest dari tox_nox_python_tests.kalkulator impor tambah, kurangi @pytest.mark.parametrize(“a, b, diharapkan”, ( (1, 2, 3), (-1, 1, 0), (0, 0 , 0), )) def test_add(a, b, diharapkan): menegaskan add(a, b) == diharapkan @pytest.mark.parametrize(“a, b, diharapkan”, ( (5, 3, 2), (10, 5, 5), (-1, -1, 0), )) def test_subtract(a, b, diharapkan): tegaskan pengurangan(a, b) = = diharapkan 3. Manajemen Ketergantungan dengan Puisi
Puisi mengelola ketergantungan dan lingkungan. File pyproject.toml adalah cara modern untuk mengelola proyek Python dan menggantikan file setup.py dan setup.cfg tradisional:
pyproject.toml (tool.poetry) name = “tox_nox_python_tests” version = “0.1.0” Description = “Otomatiskan pengujian Python di beberapa versi Python menggunakan Tox dan Nox.” penulis = (“Wallace Espindola “) readme = “README.md” lisensi = “MIT” (alat.poetry.dependencies) python = “^3.8” pytest = “^8.3” (sistem build) membutuhkan = (“puisi- inti>=1.8.0”) build-backend = “puisi.core.masonry.api”
Jalankan perintah berikut untuk menginstal dependensi dan membuat lingkungan virtual:
4. Jalankan pengujian unit dengan Pytest
Anda dapat menjalankan pengujian unit dasar dengan cara ini:
puisi dijalankan pytest –verbose 5. Pengujian Multi-Versi dengan Tox
Tox mengotomatiskan pengujian di seluruh versi Python menggunakan lingkungan virtual yang terisolasi. Konfigurasinya bersifat deklaratif dan berada dalam file tox.ini, menguji aplikasi dengan versi Python dari 3.8 hingga 3.13:
tox.ini (tox) envlist = py38, py39, py310, py311, py312, py313 (testenv)allowlist_externals = perintah puisi_pre = pemasangan puisi –tidak ada interaksi –tidak ada perintah root = puisi dijalankan pytest –verbose
Jalankan Tox menggunakan:
Tox akan secara otomatis membuat lingkungan untuk setiap versi Python dan menjalankan suite pytest secara terpisah.
Contoh keluaran:
6. Pengujian Fleksibel dengan Nox
Untuk konfigurasi yang lebih dinamis, gunakan Nox. Skrip berbasis Python memungkinkan logika kompleks dan alur kerja khusus serta menguji aplikasi dengan versi Python dari 3.8 hingga 3.13:
noxfile.py import nox @nox.session(python=(“3.8”, “3.9”, “3.10”, “3.11”, “3.12”, “3.13”)) def tes(sesi): session.install(“puisi “) session.run(“puisi”, “install”, “–tidak ada interaksi”, “–no-root”) session.run(“pytest”)
Jalankan Nox menggunakan:
Nox menawarkan fleksibilitas untuk menyesuaikan alur kerja, seperti instalasi ketergantungan bersyarat atau konfigurasi spesifik lingkungan.
Contoh keluaran:
7. Integrasi dengan CI/CD
Otomatiskan proses pengujian lebih lanjut dengan mengintegrasikan Tox dan/atau Nox ke dalam pipeline CI/CD.
Misalnya, alur kerja GitHub Actions dapat terlihat seperti ini:
.github/workflows/python-tests.yml nama: Python Pengujian pada: push: cabang: – pull_request utama: pekerjaan: pengujian: run-on: ubuntu-strategi terbaru: matriks: versi python: (3.8, 3.9, 3.10, 3.11, 3.12, 3.13) langkah-langkah: – penggunaan: tindakan/checkout@v3 – nama: Pengaturan penggunaan Python: tindakan/setup-python@v4 dengan: versi python: ${{ matriks.python-version }} – nama: Instal Puisi yang dijalankan: pip instal puisi – nama: Instal Ketergantungan yang dijalankan: instalasi puisi –tidak ada interaksi –tidak -root – nama: Jalankan Tes dengan Tox run: puisi run tox – nama: Jalankan Tes dengan Nox run: puisi run nox
Sebagai opsi, pipeline GitLab CI/CD berikut menjalankan pengujian di beberapa versi Python:
.gitlab-ci.yml tahapan: – uji tox-tes: tahap: gambar uji: python:${PYTHON_VERSION} variabel: PIP_CACHE_DIR: “$CI_PROJECT_DIR/.cache/pip” before_script: – pip install puisi – instalasi puisi –no -interaksi –skrip tanpa root: – puisi dijalankan tox cache: jalur: – .tox/ – .cache/pip/ parallel: matriks: – PYTHON_VERSION: (“3.8”, “3.9”, “3.10”, “3.11”, “3.12”, “3.13”)
Konfigurasi ini menggunakan kata kunci matriks untuk menjalankan pengujian di seluruh versi Python tertentu secara paralel.
Ingatlah bahwa Anda menjalankan Tox atau Nox di proyek Anda, bukan keduanya, karena keduanya memiliki tujuan yang sama.
Kesimpulan
Dengan menggabungkan Tox atau Nox dengan Poetry dan Pytest, Anda dapat mencapai otomatisasi pengujian multi-versi yang lancar untuk proyek Python. Baik Anda lebih menyukai pendekatan deklaratif Tox atau fleksibilitas Nox yang dapat diprogram, alat ini memastikan kode Anda divalidasi di berbagai lingkungan Python. Pendekatan itu sangat berguna untuk proyek lib bersama dan proyek lingkungan multi-pengguna.
Untuk contoh lengkapnya, periksa repositori proyek GitHub: tox-nox-python-tests.
Referensi
Proyek ini menggunakan Tox, Nox, Poetry, dan Pytest untuk otomatisasi pengujian. Untuk dokumentasi terperinci, lihat:
unity software
unity software information
software information
ADVERTISEMENT:
Informasi mengenai king slot
king selot
king slot
king slot
kingselot
pg king slot
merek 88
merek 88
mantan99
mantan88
maksimal88
maksimal88
liburan88
indodax88
indah99
indah88
ikn88
ibukota88
huawei88
hot888
hot88
dingin88
citra88
binance88
best99
best88
tradisional 88
tradisional 88
tombol88
tombol88
survey88
survey88
start88
start88
obatkuat88
obatkuat88
mcb88
mcb88
master99
master888
master88
live88
live88
libra88
kompresor88
kompresor88
kesimpulan88
kesimpulan88
kapasitor88
kapasitor88
kacamata88
kacamata88
jamu88
jamu88
jam88
jam88
follow88
follow88
dinamo88
dinamo88
baterai88
baterai88
miegacoan
miegacoan
gacoan
gacoan
website88
waweb88
waweb88
translate88
translate88
tempur888
tempur888
tambang99
tambang99
support88
support88
support88
sogoslot88
siap88
siap88
rog88
rog77
pt88
pt88
pln88
pln88
oke99
oke88
mining88
livechat88
livechat88
listrik88
listrik88
listrik88
freeport88
freeport88
free88
free88
domain88
domain88
dokter888
dokter888
bmkg88
bmkg88
asn88
merek 88 permainan paling top dan garansi imbal balik hasil besar bersama https://merek88.net/
merek 88 permainan paling top dan garansi imbal balik hasil besar bersama https://merek88.com/
mantan99 permainan paling top dan garansi imbal balik hasil besar bersama https://mantan99.asia/
mantan88 permainan paling top dan garansi imbal balik hasil besar bersama https://mantan88.asia/
maksimal88 permainan paling top dan garansi imbal balik hasil besar bersama https://maksimal88.biz/
maksimal88 permainan paling top dan garansi imbal balik hasil besar bersama https://maksimal88.asia/
liburan88 permainan paling top dan garansi imbal balik hasil besar bersama https://liburan88.com/
indodax88 permainan paling top dan garansi imbal balik hasil besar bersama https://indodax88.org/
indah99 permainan paling top dan garansi imbal balik hasil besar bersama https://indah99.asia/
indah88 permainan paling top dan garansi imbal balik hasil besar bersama https://indah88.asia/
ikn88 permainan paling top dan garansi imbal balik hasil besar bersama https://ikn88.asia/
ibukota88 permainan paling top dan garansi imbal balik hasil besar bersama https://ibukota88.com/
huawei88 permainan paling top dan garansi imbal balik hasil besar bersama https://huawei88.asia/
hot888 permainan paling top dan garansi imbal balik hasil besar bersama https://hot888.asia/
hot88 permainan paling top dan garansi imbal balik hasil besar bersama https://hot88.sale/
dingin88 permainan paling top dan garansi imbal balik hasil besar bersama https://dingin88.net/
citra88 permainan paling top dan garansi imbal balik hasil besar bersama https://citra88.asia/
binance88 permainan paling top dan garansi imbal balik hasil besar bersama https://binance88.net/
best99 permainan paling top dan garansi imbal balik hasil besar bersama https://best99.info/
best88 permainan paling top dan garansi imbal balik hasil besar bersama https://best88.asia/
tradisional 88 permainan paling top dan garansi imbal balik hasil besar bersama https://tradisional88.net/
tradisional 88 permainan paling top dan garansi imbal balik hasil besar bersama https://tradisional88.com/
tombol88 permainan paling top dan garansi imbal balik hasil besar bersama https://tombol88.org/
tombol88 permainan paling top dan garansi imbal balik hasil besar bersama https://tombol88.net/
survey88 permainan paling top dan garansi imbal balik hasil besar bersama https://survey88.net/
survey88 permainan paling top dan garansi imbal balik hasil besar bersama https://survey88.com/
start88 permainan paling top dan garansi imbal balik hasil besar bersama https://start88.org/
start88 permainan paling top dan garansi imbal balik hasil besar bersama https://start88.asia/
obatkuat88 permainan paling top dan garansi imbal balik hasil besar bersama https://obatkuat88.net/
obatkuat88 permainan paling top dan garansi imbal balik hasil besar bersama https://obatkuat88.com/
mcb88 permainan paling top dan garansi imbal balik hasil besar bersama https://mcb88.info/
mcb88 permainan paling top dan garansi imbal balik hasil besar bersama https://mcb88.asia/
master99 permainan paling top dan garansi imbal balik hasil besar bersama https://master99.biz/
master888 permainan paling top dan garansi imbal balik hasil besar bersama https://master888.asia/
master88 permainan paling top dan garansi imbal balik hasil besar bersama https://master88.asia/
live88 permainan paling top dan garansi imbal balik hasil besar bersama https://live88.bio/
live88 permainan paling top dan garansi imbal balik hasil besar bersama https://live88.asia/
libra88 permainan paling top dan garansi imbal balik hasil besar bersama https://libra88.net/
kompresor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kompresor88.net/
kompresor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kompresor88.com/
kesimpulan88 permainan paling top dan garansi imbal balik hasil besar bersama https://kesimpulan88.net/
kesimpulan88 permainan paling top dan garansi imbal balik hasil besar bersama https://kesimpulan88.com/
kapasitor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kapasitor88.net/
kapasitor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kapasitor88.com/
kacamata88 permainan paling top dan garansi imbal balik hasil besar bersama https://kacamata88.net/
kacamata88 permainan paling top dan garansi imbal balik hasil besar bersama https://kacamata88.com/
jamu88 permainan paling top dan garansi imbal balik hasil besar bersama https://jamu88.info/
jamu88 permainan paling top dan garansi imbal balik hasil besar bersama https://jamu88.asia/
jam88 permainan paling top dan garansi imbal balik hasil besar bersama https://jam88.info/
jam88 permainan paling top dan garansi imbal balik hasil besar bersama https://jam88.asia/
follow88 permainan paling top dan garansi imbal balik hasil besar bersama https://follow88.org/
follow88 permainan paling top dan garansi imbal balik hasil besar bersama https://follow88.net/
dinamo88 permainan paling top dan garansi imbal balik hasil besar bersama https://dinamo88.net/
dinamo88 permainan paling top dan garansi imbal balik hasil besar bersama https://dinamo88.info/
baterai88 permainan paling top dan garansi imbal balik hasil besar bersama https://baterai88.net/
baterai88 permainan paling top dan garansi imbal balik hasil besar bersama https://baterai88.com/
miegacoan permainan paling top dan garansi imbal balik hasil besar bersama https://miegacoan.life/
miegacoan permainan paling top dan garansi imbal balik hasil besar bersama https://miegacoan.asia/
gacoan permainan paling top dan garansi imbal balik hasil besar bersama https://gacoan.org/
gacoan permainan paling top dan garansi imbal balik hasil besar bersama https://gacoan.asia/
website88 permainan paling top dan garansi imbal balik hasil besar bersama https://website88.org/
waweb88 permainan paling top dan garansi imbal balik hasil besar bersama https://waweb88.net/
waweb88 permainan paling top dan garansi imbal balik hasil besar bersama https://waweb88.com/
translate88 permainan paling top dan garansi imbal balik hasil besar bersama https://translate88.net/
translate88 permainan paling top dan garansi imbal balik hasil besar bersama https://translate88.com/
tempur888 permainan paling top dan garansi imbal balik hasil besar bersama https://tempur888.info/
tempur888 permainan paling top dan garansi imbal balik hasil besar bersama https://tempur888.asia/
tambang99 permainan paling top dan garansi imbal balik hasil besar bersama https://tambang99.news/
tambang99 permainan paling top dan garansi imbal balik hasil besar bersama https://tambang99.asia/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.org/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.net/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.asia/
sogoslot88 permainan paling top dan garansi imbal balik hasil besar bersama https://sogoslot88.asia/
siap88 permainan paling top dan garansi imbal balik hasil besar bersama https://siap88.news/
siap88 permainan paling top dan garansi imbal balik hasil besar bersama https://siap88.asia/
rog88 permainan paling top dan garansi imbal balik hasil besar bersama https://rog88.asia/
rog77 permainan paling top dan garansi imbal balik hasil besar bersama https://rog77.info/
pt88 permainan paling top dan garansi imbal balik hasil besar bersama https://pt88.info/
pt88 permainan paling top dan garansi imbal balik hasil besar bersama https://pt88.asia/
pln88 permainan paling top dan garansi imbal balik hasil besar bersama https://pln88.biz/
pln88 permainan paling top dan garansi imbal balik hasil besar bersama https://pln88.asia/
oke99 permainan paling top dan garansi imbal balik hasil besar bersama https://oke99.asia/
oke88 permainan paling top dan garansi imbal balik hasil besar bersama https://oke88.asia/
mining88 permainan paling top dan garansi imbal balik hasil besar bersama https://mining88.org/
livechat88 permainan paling top dan garansi imbal balik hasil besar bersama https://livechat88.info/
livechat88 permainan paling top dan garansi imbal balik hasil besar bersama https://livechat88.asia/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.org/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.info/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.asia/
freeport88 permainan paling top dan garansi imbal balik hasil besar bersama https://freeport88.net/
freeport88 permainan paling top dan garansi imbal balik hasil besar bersama https://freeport88.com/
free88 permainan paling top dan garansi imbal balik hasil besar bersama https://free88.org/
free88 permainan paling top dan garansi imbal balik hasil besar bersama https://free88.asia/
domain88 permainan paling top dan garansi imbal balik hasil besar bersama https://domain88.org/
domain88 permainan paling top dan garansi imbal balik hasil besar bersama https://domain88.asia/
dokter888 permainan paling top dan garansi imbal balik hasil besar bersama https://dokter888.net/
dokter888 permainan paling top dan garansi imbal balik hasil besar bersama https://dokter888.asia/
bmkg88 permainan paling top dan garansi imbal balik hasil besar bersama https://bmkg88.net/
bmkg88 permainan paling top dan garansi imbal balik hasil besar bersama https://bmkg88.com/
asn88 permainan paling top dan garansi imbal balik hasil besar bersama https://asn88.org/
Informasi mengenai KING SLOT, Segera Daftar Bersama king selot terbaik dan terpercaya no satu di Indonesia. Boleh mendaftar melalui sini king slot serta memberikan hasil kembali yang paling tinggi saat sekarang ini hanyalah king slot paling gacor, gilak dan gaco saat sekarang di Indonesia melalui program return tinggi di kingselot serta pg king slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
situs slot terbaru
slot terbaru