0%
در حال بارگذاری...

جستجو در سایت

درس ۱۰ مقدماتی: مدیریت پروژه و تست کد در پایتون

پایتون | Python مقدماتی

تا حالا شده بخوای کدت رو تمیز، مرتب و قابل‌اعتماد نگه داری؟ 🛠️ مدیریت پروژه و تست کد بهت کمک می‌کنه برنامه‌هات رو حرفه‌ای سازمان‌دهی کنی و مطمئن بشی درست کار می‌کنن. تو این درس، من بهت یاد می‌دم چطور پروژه‌هات رو ساختاردهی کنی، با pytest کدت رو تست کنی و وابستگی‌ها رو با pip مدیریت کنی. برای مثال، تو می‌تونی یه تابع رو تست کنی تا مطمئن بشی همیشه جواب درست می‌ده. بنابراین، اگر درس‌های ۱ تا ۹ (متغیرها، شرط‌ها، حلقه‌ها، داده‌ساختارها، توابع، فایل‌ها، ماژول‌ها، شیءگرایی و APIها) رو یاد گرفتی، حالا آماده‌ای که کدت رو به سطح حرفه‌ای برسونی! 🚀 با مثال‌های واقعی، جداول مقایسه، ۱۲ تمرین و یه پروژه جذاب، این درس بهت کمک می‌کنه پروژه‌های قوی بسازی. بریم شروع کنیم! 🎉

مدیریت پروژه چیه و چرا مهمه؟ 🗂️

مدیریت پروژه یعنی سازمان‌دهی فایل‌ها، ماژول‌ها و وابستگی‌ها تا کدت خوانا و قابل‌نگهداری باشه. برای مثال، تو می‌تونی فایل‌های کدت رو توی پوشه‌های مرتب نگه داری. علاوه بر این، مدیریت پروژه این مزایا رو داره:

  • نظم: تو کدت رو راحت‌تر پیدا می‌کنی و تغییر می‌دی.
  • همکاری: بقیه راحت‌تر با کدت کار می‌کنن.
  • مقیاس‌پذیری: پروژه‌های بزرگ رو بهتر مدیریت می‌کنی.

به همین دلیل، مدیریت پروژه برای برنامه‌نویسان ضروریه. بیا یه ساختار نمونه ببینیم:


project/
├── main.py
├── utils/
│   ├── __init__.py
│   ├── helpers.py
├── tests/
│   ├── __init__.py
│   ├── test_helpers.py
├── requirements.txt

بنابراین، تو با این ساختار کدت رو مرتب نگه می‌داری.

تست کد با pytest 🧪

ماژول pytest به تو کمک می‌کنه کدت رو تست کنی تا مطمئن بشی درست کار می‌کنه. برای مثال، بیا یه تابع ساده رو تست کنیم:


# helpers.py
def add(a, b):
    return a + b

# test_helpers.py
def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0

تو می‌تونی با دستور pytest تست‌ها رو اجرا کنی:

pytest tests/test_helpers.py

به علاوه، pytest خطاها رو نشون می‌ده تا بتونی اصلاحشون کنی. 💡 نکته: اول pip install pytest رو اجرا کن.

مدیریت وابستگی‌ها با pip 📦

تو می‌تونی با pip کتابخانه‌ها (مثل requests) رو نصب کنی و وابستگی‌ها رو توی requirements.txt ذخیره کنی. برای مثال:


# requirements.txt
requests==2.31.0
pytest==7.4.0

تو می‌تونی با این دستور وابستگی‌ها رو نصب کنی:

pip install -r requirements.txt

علاوه بر این، تو می‌تونی وابستگی‌ها رو با pip freeze > requirements.txt ذخیره کنی.

ترکیب با درس‌های قبلی: تست و پایگاه داده 🔄

برای مثال، تو می‌تونی یه کلاس پایگاه داده (درس ۸) رو تست کنی:


# db.py
import sqlite3
class StudentDB:
    def __init__(self, db_name):
        self.conn = sqlite3.connect(db_name)
        self.cursor = self.conn.cursor()
        self.cursor.execute("CREATE TABLE IF NOT EXISTS students (name TEXT, grade REAL)")

    def add_student(self, name, grade):
        self.cursor.execute("INSERT INTO students (name, grade) VALUES (?, ?)", (name, grade))
        self.conn.commit()

# test_db.py
from db import StudentDB
def test_add_student():
    db = StudentDB(":memory:")
    db.add_student("علی", 15.5)
    db.cursor.execute("SELECT * FROM students")
    assert db.cursor.fetchone() == ("علی", 15.5)

بنابراین، تو با تست درس‌های قبلی (مثل پایگاه داده) رو قوی‌تر می‌کنی.

مثال‌های عملی: دنیای واقعی 💡

برای مثال، بیا چند برنامه کاربردی بسازیم:

۱. تست تابع ریاضی:


# math_utils.py
def square(num):
    return num * num

# test_math_utils.py
def test_square():
    assert square(3) == 9
    assert square(-2) == 4

۲. مدیریت پروژه با API:


# main.py
import requests
def fetch_data():
    response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
    return response.json()['title']

# test_main.py
def test_fetch_data():
    assert isinstance(fetch_data(), str)

۳. ذخیره ساختار پروژه:


# setup_project.py
import os
def create_project_structure():
    os.makedirs("project/tests", exist_ok=True)
    with open("project/requirements.txt", "w") as f:
        f.write("requests==2.31.0\npytest==7.4.0")
create_project_structure()

به همین دلیل، این مثال‌ها درس‌های قبلی (مثل ماژول‌ها و API) رو با مدیریت پروژه ترکیب می‌کنن. کدها رو توی lesson10_examples.py ذخیره کن.

خطاهای رایج و راه‌حل‌ها ⚠️

به طور کلی، این خطاها تو مدیریت پروژه و تست شایعن:

خطا علت راه‌حل
ModuleNotFoundError کتابخانه نصب نشده تو باید pip install نام_کتابخانه رو اجرا کنی
AssertionError تست ناموفق تو باید کد یا تست رو با print بررسی کنی
FileNotFoundError مسیر فایل اشتباهه تو باید مسیر رو با os.getcwd() چک کنی

برای مثال:


# test_example.py
def test_wrong():
    assert 1 + 1 == 3  # خطا: AssertionError
# حل: assert 1 + 1 == 2

تمرین‌ها: مهارتت رو تست کن! 📝

برای تسلط، این ۱۲ تمرین رو حل کن:

  1. یه تابع بنویس و با pytest تستش کن.
  2. یه ساختار پروژه با پوشه‌های tests و utils بساز.
  3. یه فایل requirements.txt با چند کتابخانه بساز.
  4. یه کلاس پایگاه داده بنویس و تستش کن.
  5. یه تابع API بنویس و خروجی‌ش رو تست کن.
  6. یه برنامه بنویس که خطای تست رو مدیریت کنه.
  7. یه تابع ریاضی بنویس و با چند تست بررسیش کن.
  8. یه پروژه با حداقل ۳ فایل پایتون بساز.
  9. یه کلاس بنویس که یه لیست رو مدیریت کنه و تستش کن.
  10. یه برنامه بنویس که وابستگی‌ها رو نصب کنه.
  11. یه تابع بنویس که یه فایل رو بخونه و تستش کن.
  12. یه پروژه بنویس که API و پایگاه داده رو ترکیب کنه و تستش کن.

💡 نکته: هر تمرین رو توی فایل جدا (ex1.py، ex2.py) ذخیره کن.

پروژه کوچک: سیستم تست کتابخانه 📚

برای مثال، بیا یه سیستم برای تست توابع کتابخانه بسازیم:

  1. یه تابع و تستش.
  2. ذخیره نتایج تست در فایل.
  3. نمایش نتایج.

# library.py
def multiply(a, b):
    return a * b

# test_library.py
from library import multiply
def test_multiply():
    assert multiply(2, 3) == 6
    assert multiply(-1, 5) == -5

# main.py
import os
def run_tests():
    result = os.system("pytest test_library.py")
    with open("test_results.txt", "a") as f:
        f.write(f"نتیجه تست: {'موفق' if result == 0 else 'ناموفق'}\n")
run_tests()

💡 تست کن: تست‌ها رو اجرا کن و فایل test_results.txt رو چک کن.

سؤالات متداول (FAQ) ❓

به طور کلی، این سؤالات برای مبتدی‌ها رایجه:

  • چرا باید تست بنویسم؟ چون تو رو مطمئن می‌کنه کدت درست کار می‌کنه.
  • pytest چطور نصب می‌شه؟ تو باید pip install pytest رو اجرا کنی.
  • چطور پروژه رو مرتب نگه دارم؟ تو باید از پوشه‌ها و requirements.txt استفاده کنی.
  • چطور خطای تست رو رفع کنم؟ تو باید خروجی pytest رو بررسی کنی.

جمع‌بندی و قدم بعدی ⏭️

تبریک! 🚀 تو این درس یاد گرفتی چطور پروژه‌هات رو مدیریت کنی و کدت رو تست کنی. بنابراین، حالا می‌تونی برنامه‌های حرفه‌ای و قابل‌اعتماد بسازی. علاوه بر این، این درس تو رو برای سطح متوسط آماده کرد. درس بعدی (الگوریتم‌ها و ساختارهای داده) بهت مفاهیم پیشرفته‌تر رو یاد می‌ده. در نهایت، تمرین‌ها رو توی PythonLessons ذخیره کن و اگه دوست داشتی، توی GitHub آپلود کن تا پیشرفتت رو نشون بدی! 😎

ارسال نظر جدید

گزارش دیدگاه