Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทดสอบใน Python ด้วยโมดูล doctest

เรารู้ว่า docstring ให้ข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันและคลาสใน Python เราสามารถใช้มันสำหรับการทดสอบฟังก์ชันโดยใช้โมดูล doctest โมดูล doctest จะรันโค้ดที่ขึ้นต้นด้วย >>> และเปรียบเทียบกับผลลัพธ์ที่คาดหวัง

ทำตามขั้นตอนด้านล่างเพื่อเขียนฟังก์ชันพร้อม doctest

  • นำเข้าโมดูล doctest

  • เขียนฟังก์ชันพร้อม docstring ภายใน docstring ให้เขียนสองบรรทัดต่อไปนี้สำหรับการทดสอบฟังก์ชันเดียวกัน

    • >>> function_name(*args).

    • ผลลัพธ์ที่ คาดหวัง.

  • เขียนโค้ดฟังก์ชัน

  • ตอนนี้ เรียกฟังก์ชัน doctest.testmod(name='function_name', verbose=True) สำหรับการทดสอบ เราไม่เห็นผลลัพธ์การทดสอบถ้า verbose ตั้งเป็น False และการทดสอบทั้งหมดผ่าน ควรตั้งเป็น True

ตัวอย่าง

ลองเขียนฟังก์ชันง่ายๆ พร้อม doctest

# นำเข้าโมดูล
import doctest

# ฟังก์ชัน
def numbers_sum(*args) -> int:
    """
    This function returns the sum of all the arguments
    Shell commands for testing
    invoking the function followed by expected output:
    >>> numbers_sum(1, 2, 3, 4, 5)
    15
    >>> numbers_sum(6, 7, 8)
    21
    """
    return sum(args)

# เรียกฟังก์ชัน testmod
doctest.testmod(name='numbers_sum', verbose=True)

ถ้าคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้

Trying: numbers_sum(1, 2, 3, 4, 5)
Expecting: 15
ok
Trying: numbers_sum(6, 7, 8)
Expecting: 21
ok
1 items had no tests: numbers_sum
1 items passed all tests: 2 tests in numbers_sum.numbers_sum
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
TestResults(failed=0, attempted=2) 

ถ้าคุณดูผลลัพธ์ จะมีคำว่า ok หลังการทดสอบแต่ละครั้ง หมายความว่าผลลัพธ์ที่คาดหวังและผลลัพธ์จริงตรงกัน คุณสามารถตรวจสอบผลลัพธ์การทดสอบที่ท้ายของผลลัพธ์ได้

ตัวอย่าง

ลองดูสิ่งที่เกิดขึ้นเมื่อการทดสอบล้มเหลว รันตัวอย่างเดียวกันแต่กับผลลัพธ์ที่ผิด

# นำเข้าโมดูล
import doctest

# ฟังก์ชัน
def numbers_sum(*args) -> int:
    """
    This function returns the sum of all the arguments
    Shell commands for testing
    invoking the function followed by expected output:
    >>> numbers_sum(1, 2, 3, 4, 5)
    10
    >>> numbers_sum(6, 7, 8)
    23
    """
    return sum(args)

# เรียกฟังก์ชัน testmod
doctest.testmod(name='numbers_sum', verbose=True)

ผลลัพธ์

ถ้าคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังนี้

Trying:     numbers_sum(1, 2, 3, 4, 5)
Expecting:     10
**********************************************************************
File "__main__", line 10, in numbers_sum.numbers_sum
Failed example:     numbers_sum(1, 2, 3, 4, 5)
Expected:     10
Got:     15
Trying:     numbers_sum(6, 7, 8)
Expecting:     23
**********************************************************************
File "__main__", line 12, in numbers_sum.numbers_sum
Failed example:     numbers_sum(6, 7, 8)
Expected:     23
Got:     21
1 items had no tests:     numbers_sum
**********************************************************************
1 items had failures:     2 of 2 in numbers_sum.numbers_sum
2 tests in 2 items. 0 passed and 2 failed.
***Test Failed*** 2 failures.
TestResults(failed=2, attempted=2)

ถ้าคุณดูผลลัพธ์การทดสอบ 2 รายการล้มเหลว คุณยังสามารถตรวจสอบ expected และ actual output ในผลลัพธ์ได้

สรุป

หากคุณมีข้อสงสัยในบทช่วยสอนนี้ ให้ระบุในส่วนความคิดเห็น