Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra bằng Python bằng mô-đun doctest

Chúng tôi biết docstring cung cấp thêm thông tin về hàm và các lớp trong Python. Chúng tôi cũng có thể sử dụng nó để kiểm tra các chức năng bằng học thuyết mô-đun. Học thuyết mô-đun thực thi mã bắt đầu bằng>>> và so sánh nó với đầu ra mong đợi.

Làm theo các bước dưới đây để viết một hàm với học thuyết.

  • Nhập học thuyết mô-đun.

  • Viết hàm với docstring. Bên trong chuỗi doc, hãy viết hai dòng sau để kiểm tra cùng một chức năng.

    • >>> function_name (* args).

    • Sản lượng mong đợi.

  • Viết mã chức năng.

  • Bây giờ, hãy gọi hàm doctest.testmod (name =function_name, verbose =True) để kiểm tra. Chúng tôi không thể xem kết quả kiểm tra nếu chi tiết được đặt thành Sai và tất cả các bài kiểm tra đều được thông qua. Tốt hơn nên đặt nó là True.

Ví dụ

Hãy viết một hàm đơn giản với 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)

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

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)

Nếu bạn thấy đầu ra có chữ ok sau mỗi lần kiểm tra. Điều đó có nghĩa là sản lượng dự kiến ​​và sản lượng thực tế được khớp với nhau. Bạn có thể kiểm tra kết quả thử nghiệm ở cuối đầu ra.

Ví dụ

Hãy xem điều gì sẽ xảy ra khi các bài kiểm tra không thành công. Chạy cùng một ví dụ với kết quả đầu ra sai.

# 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)

Đầu ra

Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.

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)

Nếu bạn xem kết quả kiểm tra, 2 cái là không đạt. Bạn cũng có thể kiểm tra mong đợi thực tế đầu ra trong đầu ra.

Kết luận

Nếu bạn có bất kỳ nghi ngờ nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.