پکیج تست نویسی پایتون pytest
- 1404/01/14
مطمئناً! در اینجا یک راهنمای ساده برای نحوهی کار با pytest
آوردهام تا بتوانید تستنویسی در پروژههای خود را شروع کنید.
pytest
اولین قدم نصب pytest
است. برای نصب این پکیج کافی است دستور زیر را در ترمینال وارد کنید:
pip install pytest
این دستور pytest
را به پروژه شما اضافه میکند.
1. نوشتن یک تست ساده:
یک فایل به نام test_example.py
ایجاد کنید و یک تست ساده بنویسید.
# test_example.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5 # تست میکند که 2 + 3 باید برابر 5 باشد
assert add(0, 0) == 0 # تست میکند که 0 + 0 باید برابر 0 باشد
assert add(-1, 1) == 0 # تست میکند که -1 + 1 باید برابر 0 باشد
add
داریم که دو عدد را با هم جمع میکند.test_add
نوشتیم که بررسی میکند آیا این تابع به درستی کار میکند یا نه.2. اجرای تستها:
برای اجرای تستها، کافی است دستور pytest
را در ترمینال اجرا کنید:
pytest
pytest
بهطور خودکار تمام فایلهای تست که با test_
شروع میشوند را پیدا کرده و آنها را اجرا میکند.
3. نتیجهی اجرای تست:
اگر تستها درست باشند، خروجی مشابه زیر خواهیم داشت:
============================= test session starts ==============================
collected 3 items
test_example.py . . . [100%]
============================== 3 passed in 0.01 seconds ==============================
اگر تستها اشتباه باشند، pytest
خطا را به شما نشان خواهد داد.
pytest
1. استفاده از assert:
در pytest
برای بررسی نتایج از دستور assert
استفاده میکنیم. این دستور بررسی میکند که یک عبارت درست باشد. اگر درست باشد، تست موفق است و اگر غلط باشد، تست شکست میخورد.
2. گزارشگیری ساده:
اگر یک تست شکست بخورد، pytest
گزارش دقیقی از خطاها را به شما نشان میدهد که میتواند شامل مقدار متغیرها و دلایل خطا باشد.
3. استفاده از pytest.mark.parametrize
:
اگر بخواهید یک تست را با ورودیهای مختلف اجرا کنید، میتوانید از pytest.mark.parametrize
استفاده کنید. این به شما کمک میکند تا تستها را برای ورودیهای مختلف بنویسید و تکرار کنید.
مثال:
import pytest
@pytest.mark.parametrize("num1, num2, result", [
(1, 2, 3),
(-1, 1, 0),
(0, 0, 0)
])
def test_addition(num1, num2, result):
assert num1 + num2 == result
در اینجا، تست test_addition
برای سه جفت ورودی مختلف اجرا میشود.
4. استفاده از Fixtures:
در pytest
میتوانید از fixtures برای آمادهسازی دادهها یا وضعیتها قبل از اجرای تست استفاده کنید. Fixtures مانند setup در سایر فریمورکها عمل میکنند.
مثال استفاده از fixture:
import pytest
@pytest.fixture
def setup_data():
return {'a': 2, 'b': 3}
def test_addition(setup_data):
assert setup_data['a'] + setup_data['b'] == 5
در اینجا:
setup_data
یک fixture است که دادههایی را قبل از هر تست آماده میکند.test_addition
استفاده میشود.5. تستهای مربوط به پایگاه داده:
در جنگو، اگر بخواهید تستهایی که نیاز به پایگاه داده دارند بنویسید، میتوانید از دکوراتور @pytest.mark.django_db
استفاده کنید.
مثال:
import pytest
from django.urls import reverse
@pytest.mark.django_db
def test_home_view(client):
url = reverse('home')
response = client.get(url)
assert response.status_code == 200
assert 'Welcome' in response.content.decode()
در اینجا:
@pytest.mark.django_db
به pytest
میگوید که این تست نیاز به پایگاه داده دارد.client.get(url)
یک درخواست GET به سرور ارسال میکند و بررسی میکنیم که پاسخ صحیح باشد.pytest
گزینههای زیادی برای تنظیمات و کنترلهای بیشتر دارد. برخی از رایجترین گزینهها:
نمایش جزئیات بیشتر خطاها:
pytest -v
اجرای تستهای خاص (با نام فایل):
pytest test_example.py
اجرای فقط تستهای خراب:
pytest --failed
اجرا با گزارش کوتاه:
pytest --maxfail=3
pytest
را نصب کنید.assert
بنویسید.pytest
تستها را اجرا کنید.parametrize
، fixtures
و دکوراتورهای دیگر برای نوشتن تستهای پیچیدهتر استفاده کنید.pytest
گزارشهای دقیق و خوانا از نتایج تستها ارائه میدهد.لینک مستندات:pytest
رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.