Using doctest from a Separate File

Python Testing Your Code

SU

Alohida Fayldan doctestdan Foydalanish

Agar sizning doctest docstringlaringiz juda uzun bo'lib ketayotganini sezsangiz, ularni alohida faylga ko'chirish yaxshi fikr. Keling, yangi doctest_external.py faylini yaratib, kodni quyidagicha soddalashtiraylik:

# doctest_external.py
 
def add(a: int, b: int) -> int:
    return a + b

Endi, siz docstringga qo'shgan testlarni test.txt nomli faylga saqlaymiz:

The following are tests for doctest_external

>>> from doctest_external import add
>>> add(1, 2)
3
>>> add(4, 5)
9

Faylga yordamchi ma'lumotlarni ham qo'shishingiz mumkin, bu test faylining maqsadini tushuntiradi. Yordamchi ma'lumotlar — >>>dan oldin ko'rinadigan satrlar. Bu sizga add() funksiyasidan docstringni olib tashlashga imkon berdi.

Endi bu kodni test qilish uchun, Python fayli o'rniga test faylini ishlatishingiz kerak. Misol uchun:

Computer:chapter30_testing$ python3 -m doctest -v test.txt
Trying:
    from doctest_external import add
Expecting nothing
ok
Trying:
    add(1, 2)
Expecting:
    3
ok
Trying:
    add(4, 5)
Expecting:
    9
ok
1 items passed all tests:
    3 tests in test.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.

Bu kod 2 o'rniga 3 testning muvaffaqiyatli o'tganini ko'rsatadi, chunki siz doctest_externalni import qilishingiz kerak, shunda testni to'liq amalga oshirishingiz mumkin. doctest importni ham test sifatida qabul qiladi!

doctest modulini to'g'ridan-to'g'ri test faylini bajarish uchun testfile() funksiyasidan foydalanishingiz mumkin. Mana, qanday ishlashini ko'rsatadigan misol:

>>> import doctest
>>> doctest.testfile('test.txt')
TestResults(failed=0, attempted=3)
>>>

doctestni shu tarzda ishga tushirganingizda, u TestResults ob'ektini qaytaradi, bu sizga sinovlar soni va xatoliklar sonini ko'rsatadi. Siz ko'rishingiz mumkinki, 3 ta test o'tkazilgan va ulardan hech biri muvaffaqiyatsiz bo'lmagan, bu esa barcha testlar muvaffaqiyatli o'tganini bildiradi.

Bundan tashqari, Python’da testlar yaratishning boshqa usullari ham mavjud. Keyingi bo'limda unittest modulidan qanday foydalanishni o'rganasiz.

Last updated on

On this page

Xato haqida xabar berish