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

การทดสอบใน Python โดยใช้ doctest module


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

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

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

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

    • >>>function_name(*args)

    • คาดหวัง ผลผลิต

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

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

ตัวอย่าง

มาเขียนฟังก์ชันง่ายๆ กับ doctest กัน

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   15
   >>> numbers_sum(6, 7, 8)
   21
   """
   return sum(args)
# invoking the testmod function
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)

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

ตัวอย่าง

มาดูกันว่าจะเกิดอะไรขึ้นเมื่อการทดสอบล้มเหลว เรียกใช้ตัวอย่างเดียวกันกับเอาต์พุตที่ไม่ถูกต้อง

# importing the module
import doctest
# function
def numbers_sum(*args) -> int:
   """
   This function returns the sum of all the argumets
   Shell commands for testing
   incoking the function followed by expected output:
   >>> numbers_sum(1, 2, 3, 4, 5)
   10
   >>> numbers_sum(6, 7, 8) 23
   """ return sum(args)
# invoking the testmod function
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 รายการ คุณยังสามารถตรวจสอบ คาดหวัง และ ของจริง เอาต์พุตในเอาต์พุต

บทสรุป

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