Using doctest in the Terminal

Python Testing Your Code

SU

Terminalda doctestdan foydalanish

Python hujjatlariga ko'ra, doctest moduli kodingizni “interaktiv Python sessiyalariga o'xshash matnlar bo'yicha qidiradi va so'ngra bu sessiyalarni bajarib, ularning aynan ko'rsatilganidek ishlashini tekshiradi.”

Siz doctestni quyidagi maqsadlarda ishlatishingiz mumkin:

  • Docstringlarning to'g'riligi va yangiligi tekshirish
  • Paket uchun qo'llanma hujjatlarini yozish
  • Regression sinovlarini bajarish

Regression sinovlari – bu dasturdagi o'zgartirishlardan keyin mavjud funksionallikning buzilmaganini tekshirishni ifodalovchi atama.

Agar siz doctest hujjatlariga qaramoqchi bo'lsangiz, quyidagi manzilda topishingiz mumkin:

Boshlash uchun sizga doctestdan foydalanish uchun kod kerak bo'ladi. Siz add_doctest.py nomli fayl yaratib, unga quyidagi kodni qo'shishingiz mumkin:

# add_doctest.py
 
def add(a: int, b: int) -> int:
    """
    >>> add(1, 2)
    3
    >>> add(4, 5)
    9
    """
    a + b

add() funksiyasi ikkita butun sonni qabul qiladi va integer qiymat qaytarishi kerak. Shuningdek, docstringga ikkita test qo'shdingiz. Docstringda add() funksiyasiga qaysi argumentlar o'tkazilganini va qaysi qiymat qaytarilishi kerakligini ko'rsatyapsiz.

Ammo, kodingizda muammo bor. Buni ko'rayapsizmi? Agar ko'rmasangiz, xavotir olmang. Siz doctestni ishga tushirasiz va u nimani noto'g'ri ekanligini sizga aytadi.

Doctestni ishga tushirish uchun terminalni oching va Python faylingizni saqlagan joyga o'ting. Keyin quyidagi komandani bajaring:

python3 -m doctest add_doctest.py

Siz quyidagi chiqishni ko'rishingiz kerak:

Computer:chapter30_testing$ python3 -m doctest add_doctest.py
**********************************************************************
File "/chapter30_testing/add_doctest.py", line 3, in add_doctest.add
Failed example:
    add(1, 2)
Expected:
    3
Got nothing
**********************************************************************
File "/chapter30_testing/add_doctest.py", line 5, in add_doctest.add
Failed example:
    add(4, 5)
Expected:
    9
Got nothing
**********************************************************************
1 items had failures:
2 of 2 in add_doctest.add
***Test Failed*** 2 failures.
Computer:chapter30_testing$

Ikkala test ham muvaffaqiyatsiz bo'ldi. Chiqishda testlarning muvaffaqiyatsiz bo'lishining sababi shundaki, ular qaytariladigan qiymatni kutishgan, lekin “Hech narsa olinmadi” deb yozilgan. Siz kodingizni yangilab, ikkita argumentning qo'shilishini qaytarishingiz kerak:

# add_doctest_working.py
 
def add(a: int, b: int) -> int:
    """
    >>> add(1, 2)
    3
    >>> add(4, 5)
    9
    """
    return a + b

Endi, agar doctestni yana ishga tushirsangiz, hech qanday chiqish ko'rmaysiz. Bu, barcha testlar muvaffaqiyatli o'tganini anglatadi. Agar testlar muvaffaqiyatli o'tsa ham, chiqishni ko'rishni istasangiz, -v flagini qo'shishingiz mumkin:

Computer:chapter30_testing$ python3 -m doctest -v add_doctest_working.py
Trying:
    add(1, 2)
Expecting:
    3
ok
Trying:
    add(4, 5)
Expecting:
    9
ok
1 items had no tests:
    add_doctest_working
1 items passed all tests:
    2 tests in add_doctest_working.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
Computer:chapter30_testing$

Endi siz testlarning muvaffaqiyatli o'tganini ko'rishingiz mumkin!

Endi, doctestni kodingizda qanday ishlatishni o'rganishga tayyorsiz!

Last updated on

On this page

Xato haqida xabar berish