परिचय
जब आप Python में लाइब्रेरी या एप्लिकेशन डेवलप करते हैं, तो यह सुनिश्चित करना बेहद ज़रूरी है कि वे इंटरप्रेटर के विभिन्न वर्ज़न के साथ संगत हों। यह विशेष रूप से PyPI पर पैकेज प्रकाशित करते समय महत्वपूर्ण हो जाता है, जहाँ उपयोगकर्ता Python के अलग-अलग वर्ज़न का उपयोग कर सकते हैं। Python 3.7, 3.8, 3.9, 3.10 को मैन्युअल रूप से इंस्टॉल करना और फिर प्रत्येक वर्ज़न का परीक्षण करना बहुत समय और मेहनत लेता है।
यहाँ tox काम आता है — यह एक शक्तिशाली टेस्टिंग ऑटोमेशन टूल है जो आपको Python के विभिन्न वर्ज़न के साथ अलग-अलग वर्चुअल वातावरण में टेस्ट चलाने की सुविधा देता है। Tox स्वचालित रूप से डिपेंडेंसी इंस्टॉल करता है, साफ वातावरण बनाता है और टेस्टिंग के परिणामों की पुनरुत्पादनशीलता सुनिश्चित करता है।
tox क्या है और इसकी आवश्यकता क्यों है
Tox ("testing out of the box" का संक्षिप्त रूप) एक कमांड-लाइन टूल है, जो Python में लिखा गया है और Python प्रोजेक्ट्स के परीक्षण को विभिन्न वातावरणों में स्वचालित करता है। यह अलग-अलग वर्चुअल वातावरण बनाता है, उनमें डिपेंडेंसी इंस्टॉल करता है और टेस्ट चलाता है, जिससे आप अपने कोड की विभिन्न Python वर्ज़न और डिपेंडेंसी सेट के साथ संगतता की जाँच कर सकते हैं।
tox के मुख्य लाभ:
वातावरण का अलगाव — प्रत्येक टेस्ट एक अलग वर्चुअल वातावरण में चलता है, जिससे डिपेंडेंसी विवाद समाप्त हो जाते हैं।
स्वचालन — वातावरण बनाने, डिपेंडेंसी इंस्टॉल करने और टेस्ट चलाने की पूरी प्रक्रिया पूरी तरह से स्वचालित है।
मल्टी-वर्ज़न सपोर्ट — Python के विभिन्न वर्ज़न पर एक साथ परीक्षण करने की क्षमता।
पुनरुत्पादनशीलता — विभिन्न वातावरणों में समान परिणाम प्राप्त करने की गारंटी।
CI/CD के साथ एकीकरण — निरंतर एकीकरण प्रणालियों में स्वचालित परीक्षण के लिए आसान सेटअप।
इंस्टॉलेशन और प्रारंभिक सेटअप
tox इंस्टॉल करना
tox को कई तरीकों से इंस्टॉल किया जा सकता है:
# pip के माध्यम से
pip install tox
# conda के माध्यम से
conda install -c conda-forge tox
# pipx के माध्यम से (अनुशंसित तरीका)
pipx install tox
बेसिक कॉन्फ़िगरेशन फ़ाइल बनाना
tox की मुख्य कॉन्फ़िगरेशन फ़ाइल tox.ini है, जो प्रोजेक्ट की रूट डायरेक्टरी में होनी चाहिए:
[tox]
envlist = py38, py39, py310, py311
[testenv]
deps =
pytest
pytest-cov
commands =
pytest tests/ --cov=src/
प्रोजेक्ट की संरचना
tox के सही काम करने के लिए निम्नलिखित प्रोजेक्ट संरचना अनुशंसित है:
my_project/
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── module.py
├── tests/
│ ├── __init__.py
│ └── test_module.py
├── tox.ini
├── setup.py (या pyproject.toml)
└── requirements.txt
tox के साथ बुनियादी काम
बुनियादी कमांड
Tox एक सरल कमांड-लाइन इंटरफ़ेस प्रदान करता है:
# envlist से सभी वातावरण चलाना
tox
# किसी विशिष्ट वातावरण को चलाना
tox -e py39
# कई वातावरण चलाना
tox -e py38,py39,lint
# वातावरण को जबरदस्ती पुनः बनाना
tox -r
# विस्तृत आउटपुट के साथ चलाना
tox -v
# बहुत विस्तृत आउटपुट (डीबगिंग के लिए)
tox -vv
tox कैसे काम करता है
tox की कार्यप्रक्रिया में निम्नलिखित चरण शामिल हैं:
- कॉन्फ़िगरेशन विश्लेषण —
tox.iniफ़ाइल को पढ़ना और वातावरणों की सूची निर्धारित करना - वर्चुअल वातावरण बनाना — प्रत्येक निर्दिष्ट Python इंटरप्रेटर के लिए
- पैकेज इंस्टॉल करना — परीक्षण किए जाने वाले पैकेज को प्रत्येक वातावरण में इंस्टॉल करना
- डिपेंडेंसी इंस्टॉल करना —
depsसेक्शन में निर्दिष्ट डिपेंडेंसी इंस्टॉल करना - कमांड निष्पादित करना —
commandsसेक्शन में परिभाषित कमांड चलाना