back to top
20.7 C
New York

Mengotomatiskan Pengujian Multi-Versi Python Dengan Tox dan Nox

Published:

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:

Nox menawarkan fleksibilitas untuk menyesuaikan alur kerja, seperti instalasi ketergantungan bersyarat atau konfigurasi spesifik lingkungan

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

Artikel terkait

Artikel Terbaru