


Hei!
Mendapat projek Python dan perlu memastikan ia berfungsi pada setiap versi Python di luar sana? Percayalah, itu boleh menjadi sakit kepala yang BESAR. Tetapi jangan risau, saya ada di belakang anda. Dalam panduan ini, saya akan menunjukkan kepada anda cara menggunakan Tox, Nox dan CI/CD, alatan yang hebat, untuk menguji kod anda merentas berbilang versi Python.
Dan teka apa? Ia lebih mudah daripada yang anda fikirkan.
Apabila anda selesai membaca ini, anda akan menjalankan ujian seperti pakar merentasi Python 3.8 hingga 3.13. Kami akan memastikan perkara mudah, menyeronokkan dan boleh diambil tindakan sepenuhnya. Bunyi bagus? Mari selami.
Mengapa Anda Perlu Mengambil berat tentang Ujian Berbilang Versi?
Gambar ini: Anda menulis beberapa kod Python yang hebat, dan ia berfungsi pada komputer anda. Tetapi kemudian, BAM! Seorang pengguna menghantar e-mel kepada anda, mengatakan ia rosak pada Python 3.9. Anda mencubanya, dan sudah pasti, ada sesuatu yang tidak kena.
Kenapa?
Kerana Python mempunyai semua versi ini, dan setiap versi mempunyai ciri tersendiri. Jika anda tidak menguji kod anda pada berbilang versi, anda benar-benar buta.
Tetapi BERITA BAIKnya ialah, anda tidak perlu memasang sekumpulan versi Python secara manual dan menjalankan ujian pada setiap satu. Di situlah Tox dan Nox masuk seperti wira-wira.
Apakah Tox dan Nox?
Mari kita pecahkan:
Tox: Anggap ia sebagai robot yang menguji kod anda dalam persekitaran Python yang berbeza. Ia sangat teratur dan mengikut arahan anda daripada fail tox.ini yang mudah. Anda memberitahu Tox apa yang perlu dilakukan, dan ia melakukannya.
Nox: Ia seperti Tox, tetapi lebih sejuk dalam beberapa cara. kenapa? Kerana bukannya fail konfigurasi, anda boleh menulis skrip Python (noxfile.py). Ingin menambah logik atau syarat tersuai? Nox membelakangi anda.
Jadi yang mana lebih baik? Secara jujur, ia bergantung. Jika anda suka perkara yang kemas dan mudah, gunakan Tox. Jika anda jenis kreatif dan sukakan fleksibiliti, Nox ialah kesesakan anda.
Mari Bina Sesuatu yang Hebat
Ini tawarannya:
Kami akan mencipta projek mini dengan dua fungsi mudah:
- Tambah dua nombor.
- Tolak satu nombor daripada nombor lain.
Kami akan menulis beberapa ujian untuk memastikan ia berfungsi, dan kemudian kami akan menggunakan Tox dan Nox untuk mengujinya pada versi Python dari 3.8 hingga 3.13.
Seronok bunyinya, kan?
Berikut ialah struktur fail yang sedang kami usahakan:
tox-nox-python-test-automation/ ├── tox_nox_python_test_automation/ │ ├── __init__.py │ ├── main.py │ └── calculator.py ├── tests/ │ ├── __init__.py │ └── test_calculator.py ├── pyproject.toml ├── tox.ini ├── noxfile.py ├── README.md
Langkah 1: Tulis Kod
Inilah kalkulator.py kami:
def add(a, b): """Returns the sum of two numbers.""" return a + b def subtract(a, b): """Returns the difference of two numbers.""" return a - b
Mudah, bukan? Mari kekalkan cara itu.
Langkah 2: Tulis Beberapa Ujian
Masa untuk memastikan kod kami berfungsi. Inilah test_calculator.py kami:
tox-nox-python-test-automation/ ├── tox_nox_python_test_automation/ │ ├── __init__.py │ ├── main.py │ └── calculator.py ├── tests/ │ ├── __init__.py │ └── test_calculator.py ├── pyproject.toml ├── tox.ini ├── noxfile.py ├── README.md
Kami menggunakan pytest, alat ujian yang pada asasnya MVP ujian Python. Jika anda tidak pernah menggunakannya, jangan berpeluh, ia sangat mudah untuk diambil.
Langkah 3: Urus Ketergantungan dengan Puisi
Baiklah, jadi bagaimana kami memastikan semua orang yang bekerja pada projek ini menggunakan kebergantungan yang sama? Kami menggunakan Puisi, yang seperti fail supercharged requirements.txt.
Begini rupa pyproject.toml kami:
def add(a, b): """Returns the sum of two numbers.""" return a + b def subtract(a, b): """Returns the difference of two numbers.""" return a - b
Untuk memasang semuanya, jalankan sahaja:
import pytest from tox_nox_python_test_automation.calculator import add, subtract @pytest.mark.parametrize("a, b, expected", [ (1, 2, 3), (-1, 1, 0), (0, 0, 0), ]) def test_add(a, b, expected): assert add(a, b) == expected @pytest.mark.parametrize("a, b, expected", [ (5, 3, 2), (10, 5, 5), (-1, -1, 0), ]) def test_subtract(a, b, expected): assert subtract(a, b) == expected
Langkah 4: Jalankan ujian unit dengan Pytest
Anda boleh menjalankan ujian unit asas dengan cara ini:
[tool.poetry] name = "tox_nox_python_tests" version = "0.1.0" description = "Testing with multiple Python versions using Tox and Nox." authors = ["Wallace Espindola <wallace.espindola>"] license = "MIT" [tool.poetry.dependencies] python = "^3.8" pytest = "^8.3" nox = "^2024.10.9" tox = "^4.23.2" </wallace.espindola>
Dan akan melihat ujian unit standard menjalankan output.
Langkah 5: Uji dengan Tox
Tox adalah mengenai automasi. Inilah tox.ini kami:
poetry install
Jalankan Tox dengan satu arahan:
poetry run pytest --verbose
Dan ledakan! Tox akan menguji kod anda merentas setiap versi Python yang disenaraikan. Lihat dan contoh output di sini:
Langkah 6: Uji dengan Nox
Mahukan lebih kawalan? Nox membolehkan anda menjadi kreatif. Inilah noxfile.py kami:
[tox] envlist = py38, py39, py310, py311, py312, py313 [testenv] allowlist_externals = poetry commands_pre = poetry install --no-interaction --no-root commands = poetry run pytest
Jalankan Nox dengan:
poetry run tox
Kini anda mempunyai fleksibiliti penuh untuk menambah logik, melangkau persekitaran atau melakukan apa sahaja yang anda perlukan. Lihat dan contoh output di sini:
Langkah 7: Automatikkan dengan CI/CD
Mengapa berhenti di ujian tempatan? Mari sediakan ini untuk dijalankan secara automatik pada GitHub Actions dan GitLab CI/CD.
Tindakan GitHub
Berikut ialah fail aliran kerja .github/workflows/python-tests.yml:
import nox @nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]) def tests(session): session.install("poetry") session.run("poetry", "install", "--no-interaction", "--no-root") session.run("pytest")
GitLab CI/CD
Berikut ialah .gitlab-ci.yml:
poetry run nox
Mari Selesaikan
Anda berjaya! Anda kini tahu cara menguji kod Python merentas berbilang versi menggunakan Tox, Nox dan Puisi.
Inilah perkara yang perlu diingat:
- Tox adalah pilihan anda untuk ujian automatik yang mudah.
- Nox memberi anda kebebasan untuk menyesuaikan.
- Puisi menjadikan pengurusan kebergantungan menjadi mudah.
- CI/CD memastikan ujian anda berjalan secara automatik.
Rujukan, sudah tentu
Projek ini menggunakan Tox, Nox, Puisi dan Pytest untuk automasi ujian. Untuk dokumentasi terperinci, sila lihat:
Dokumentasi Tox
Dokumentasi Nox
Dokumentasi Puisi
Dokumentasi Pytest
Perlukan kod penuh dan contoh? Lihat repo di GitHub: tox-nox-python-tests.
Untuk subjek menarik dan perbincangan teknikal lain, semak halaman LinkedIn saya.
Sekarang pergi ke sana dan jadikan projek Python anda kalis peluru! ?
Atas ialah kandungan terperinci Uji Kod Python Seperti Pro dengan Puisi, Tox, Nox dan CI/CD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Slicingapythonlistisdoneusingthesyntaxlist [Mula: berhenti: langkah] .here'showitworks: 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelementToexclude.3)

NumpyallowsforvariousoperationsonArrays: 1) BasicarithmeticLikeaddition, penolakan, pendaraban, danDivision; 2) Pengerjaan AdvancedSuchasmatrixmultiplication; 3) Element-WiseOperationswithoutExplicitLoops;

Arraysinpython, terutamanya yang ada, adalah, penawaran yang ditawarkan.1) numpyarraysenableFandlingoflargedataSetsandClexPleperationsLikemovingAverages.2)

ListsSandnumpyAraySInpythonHavedifferMememoryFootPrints: listsaremoreflexibleButlessMememory-cekap, pemanmak

ToensurePythonscriptsbehaveCorrectlyCrossdevelopment, pementasan, dan produksi, usetheseStregies: 1) Environmentvariablesforsimplesettings, 2) ConfigurationFilesfilePlexSetups, dan3) Dynamicloadingforadaptability.EachMethodeFerPiReFiteReFiteShitsandReFitSandRiteFitSandRiteFitSandRiteFiteSandRiteReFitSandRiteReFitSandRiteFiteShiteSandReFiteShitsandReShitsAnfitsEts,

Sintaks asas untuk pengirim senarai python adalah senarai [Mula: Berhenti: Langkah]. 1. Start adalah indeks elemen pertama yang disertakan, 2.Stop adalah indeks elemen pertama yang dikecualikan, dan 3. Step menentukan saiz langkah antara elemen. Hirisan tidak hanya digunakan untuk mengekstrak data, tetapi juga untuk mengubah suai dan membalikkan senarai.

ListsOutPerFormAraySin: 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData, dan3) MemoryeficiencyForSparsedata, ButmayHaveslightPerformancecostSincertaor.

ToConvertapythonarraytoalist, usethelist () constructororageneratorexpression.1) importTheArrayModuleAndCreateeanArray.2) uselist (arr) atau [xforxinarr] toConvertittoalist, urusanPengerasiPormanceAndMemoryeficiencyForlargedatasets.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini
