فصل ششم: تست حرفه‌ای با pytest و بسته‌بندی پروژه

ساختار بسته و pyproject.toml

سازمان‌دهی پروژه برای تبدیل شدن به یک بسته

وقتی می‌خواهید کد خود را به‌صورت یک کتابخانه‌ی قابل‌نصب منتشر کنید، باید ساختار پروژه را استاندارد کنید. ساختار رایج امروزی به این شکل است:

my_package/
├── pyproject.toml
├── README.md
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── core.py
└── tests/
    └── test_core.py

فایل pyproject.toml جایگزین مدرن فایل قدیمی setup.py شده و متادیتای بسته، وابستگی‌ها و تنظیمات ابزار ساخت را در یک فایل استاندارد نگه می‌دارد:

[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"

[project]
name = "my-package"
version = "0.1.0"
description = "یک بسته‌ی نمونه"
requires-python = ">=3.10"
dependencies = [
    "requests>=2.31",
]

استفاده از پوشه‌ی src (به‌جای قرار دادن کد در ریشه‌ی پروژه) یک قرارداد رایج است که از وارد کردن اشتباهیِ نسخه‌ی نصب‌نشده‌ی بسته در زمان تست جلوگیری می‌کند. نگه‌داشتن تست‌ها در پوشه‌ای جدا نیز باعث می‌شود بسته‌ی نهایی حجم کمتری داشته باشد و ساختار پروژه برای دیگر توسعه‌دهندگان قابل‌پیش‌بینی‌تر باشد.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.