Python unittest hiển thị báo cáo in

Kiểm thử đơn vị Python là một loại kiểm thử phần mềm trong đó các đơn vị riêng lẻ của chương trình được kiểm tra để đảm bảo rằng chúng đáp ứng một bộ tiêu chuẩn nhất định và nó đang hoạt động như dự kiến. trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng các phương pháp kiểm tra đơn vị Python

 

Thử nghiệm đơn vị Python được sử dụng để làm gì?

Các bài kiểm tra đơn vị Python có thể được sử dụng để kiểm tra các chức năng đơn lẻ, toàn bộ mô-đun hoặc giao diện hoàn chỉnh. Trong bài viết này, chúng ta sẽ viết các bài kiểm tra trên một chức năng đơn giản bằng cách sử dụng khung kiểm tra phổ biến có tên là unittest. Hàm bên dưới lấy một số làm đối số và thêm 10 vào nó.

 

    

 

Và nếu chúng ta thay đổi đối số mà chúng ta đang truyền cho hàm từ 5 thành 7 thì chúng ta sẽ nhận được một kết quả khác

 

    

 

Bây giờ chúng tôi muốn viết một số thử nghiệm cho chức năng đơn giản này để đảm bảo rằng nó hoạt động như chúng tôi mong đợi. Các bài kiểm tra thường được viết trong một tệp khác được đặt tên theo quy ước theo hai cách

Tên tệp phải được đặt trước hoặc sau từ ‘test’ được phân tách khỏi tên tệp bằng dấu gạch dưới.

 

 

Chúng ta sẽ nhập khung Python unittest cũng như hàm mà chúng ta đang chạy thử nghiệm, trong trường hợp này có tên là add_10. Tất cả các thử nghiệm cần phải thuộc một lớp mô tả trong trường hợp này, chúng tôi sẽ đặt tên cho nó là 'AdditionTest'.

Chúng ta cũng cần kế thừa từ unittest. Các trường hợp thử nghiệm. Bây giờ chúng ta có thể bắt đầu viết các bài kiểm tra cơ bản cho mã của mình. Chúng tôi muốn viết một phương thức thử nghiệm có tên 'testadd' và chúng tôi sẽ cung cấp cho nó một số con số để thử nghiệm và .  

 

 

 

Bây giờ để chạy đoạn mã trên, chúng ta có thể chạy lệnh bên dưới trong Terminal của mình. Tuy nhiên, xin lưu ý rằng điều này sẽ chỉ hoạt động nếu bạn đang chạy Python3 trên máy của mình.  

py -m unittest test_add_num.py

 



 

 

 

Về cơ bản, bài kiểm tra trên kiểm tra xem số mà chúng ta đưa ra có phải là đầu ra của hàm hay không. Giờ đây, có một cách chính xác hơn để chạy đoạn mã trên thay vì phải gõ lệnh đó mỗi khi chúng tôi cần chạy thử nghiệm.

 

Ở cuối tệp chứa trường hợp thử nghiệm của chúng tôi, chúng tôi sẽ thực hiện một câu lệnh if nói rằng nếu tên của tệp giống với tên mà chúng tôi đang chạy, thì chúng tôi sẽ chạy unittests.main[].

 

 



 

 

 

Bây giờ, chúng ta sẽ sửa đổi hàm  ‘test_add’ và chạy thêm một số thử nghiệm trên số nguyên, số thực và số phân số. Như hình dưới đây.

 

 

 

 

 

Bất chấp ấn tượng do mã tạo ra, chúng tôi đã sửa đổi rằng chúng tôi đang chạy một số thử nghiệm; . Điều này là do chúng tôi chỉ có một phương pháp thử nghiệm

 

Bây giờ, giả sử chúng ta chuyển sai đầu ra như đầu ra dự kiến ​​trong phương pháp kiểm tra ở trên, có khả năng là kiểm tra sẽ thất bại. Như chúng ta thấy trong đoạn mã bên dưới, chúng ta đã thay đổi kết quả đầu ra dự kiến ​​trong câu lệnh đầu tiên thành 26 trong khi kết quả đúng phải là 25.

 

 

 

 

Từ đầu ra ở trên, rõ ràng là chúng ta cóAssertionError có nghĩa là sự khác biệt giữa những gì xuất phát từ hàm và những gì .

 

Vì vậy, bây giờ chúng tôi muốn kiểm tra xem hàm có đưa ra các lỗi chính xác khi cung cấp dữ liệu sai hay không. Giả sử chúng ta cố thêm chuỗi 'cabbage' vào 10, chúng ta sẽ nhận được Type ErrorType Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . Type Error'cabbage' 10 . . Bây giờ, điều này là tốt vì chức năng này đã báo lỗi như chúng ta mong đợi.

 

 

 

 

Mặt khác, nếu chúng tôi cố gắng thêm một chuỗi khác, chẳng hạn như 'True' vào số 10, chúng tôi sẽ không nhận được .

 



 

Sau khi chúng ta chuyển từ 'true' làm đối số cho hàm, người ta sẽ cho rằng chúng ta sẽ gặp một số loại lỗi hoặc .

 

Ngược lại, chúng ta nhận được số mười một như thể chúng ta đã chuyển một đối số, bây giờ điều này không tốt vì nó ngụ ý rằng chúng ta có thể đưa đầu vào sai vào hàm và vẫn có đầu ra.  

 

 

Bây giờ để ngăn chặn điều này, chúng ta có thể viết một thử nghiệm khác để kiểm tra TypeError. Hơn nữa, chúng tôi muốn sử dụng trình quản lý bối cảnh để đảm bảo rằng nó đang gây ra lỗi.

 

Bây giờ, chúng tôi có thể nói rằng dữ liệu của chúng tôi tương đương với thử nghiệm,  và chúng tôi sẽ tự. assertRaises[TypeError] để đảm bảo rằng nó làm tăng Type Error.

 

 

 

 

Từ đầu ra, rõ ràng là chúng tôi đã chạy hai bài kiểm tra và tất cả đều vượt qua thành công. Bây giờ, giả sử chúng ta trở lại chuỗi True cũng không gây ra bất kỳ lỗi nào. Trong trường hợp này, chúng ta sẽ có một thất bại.

 

 

 

 

Như chúng ta có thể thấy trong kết quả, TypeError không được nâng lên như dự kiến ​​trước đó. Mặt khác, nếu chúng ta chạy hàm add_10 riêng lẻ, nó sẽ cho chúng ta kết quả thực tế là 11.

 

 

 

 

Điều này có nghĩa là trước tiên chúng ta cần thêm một chút xác thực vào chức năng của mình. Do đó, chúng ta sẽ nói rằng nếu loại x không phải là số nguyên cũng không phải là số dấu phẩy động thì hãy tăng TypeError.  

 

 

 

 

Bản tóm tắt

Nếu bạn muốn xem thêm hướng dẫn lập trình, hãy xem kênh Youtube của chúng tôi, nơi chúng tôi có rất nhiều video hướng dẫn Python bằng tiếng Anh

hướng dẫn lập trình

Trong chuỗi Hướng dẫn lập trình Python của chúng tôi, bạn sẽ tìm thấy các tài liệu hữu ích giúp bạn cải thiện kỹ năng lập trình của mình và đẩy nhanh quá trình học tập

hướng dẫn lập trình

  • Cách sử dụng vòng lặp Python for
  • Cách sử dụng Bộ Python
  • Cách sử dụng Từ điển Python
  • Cách sử dụng các lớp Python
  • Cách sử dụng phạm vi Python
  • Cách sử dụng câu lệnh if-else trong Python
  • Cách sử dụng Python RegEx
  • Cách sử dụng Danh sách Python
  • Cách sử dụng Python Liệt kê
  • Cách sử dụng Hàm Python
  • Cách sử dụng Python Split
  • Cách sử dụng Python Try-Exception
  • Cách sử dụng Python Tuples
  • Cách sử dụng Mảng Python
  • Cách sử dụng Sắp xếp Python
  • Cách sử dụng Python DateTime
  • Làm cách nào để tải xuống Python?
  • Cách sử dụng chức năng Ghi tệp Python
  • Cách sử dụng Python Lambda
  • Cách sử dụng Python ListAppend
  • Cách sử dụng Tính năng hiểu danh sách Python
  • Cách sử dụng Bản đồ Python
  • Cách sử dụng Toán tử Python
  • Cách sử dụng Python Pandas
  • Cách sử dụng Yêu cầu Python
  • Cách sử dụng Chuỗi Python
  • Cách sử dụng Đếm Python
  • Cách sử dụng Nhận xét Python
  • Cách sử dụng phương pháp Trình đọc tệp Python
  • Cách sử dụng Python IDE-s
  • Cách sử dụng ghi nhật ký Python
  • Cách sử dụng In Python
  • Cách sử dụng Python Zip
  • Cách sử dụng Python nối thêm
  • Cách sử dụng Biến toàn cục Python
  • Cách sử dụng phương thức nối Python
  • Cách sử dụng độ dài danh sách Python
  • Cách sử dụng các tệp JSON của Python
  • Cách sử dụng Python Modulo
  • Cách sử dụng các phương thức mở tệp Python
  • Cách sử dụng vòng Python
  • Cách sử dụng giấc ngủ Python
  • Cách sử dụng Python thay thế
  • Cách sử dụng dải Python
  • Cách sử dụng mô-đun Thời gian Python
  • Cách sử dụng các bài kiểm tra đơn vị Python
  • Làm cách nào để lưu dữ liệu vào tệp văn bản bằng Trình quản lý ngữ cảnh?
  • Cách sử dụng các mô-đun bên ngoài Python
  • Cách sử dụng Python tìm
  • Cách sử dụng trình quản lý gói pip Python
  • Cách xóa tệp trong Python
  • Phân tích tệp XML bằng Python
  • Cách tạo GUI bằng Python
  • Cách sử dụng Python trong Command Prompt
  • Cách chạy chương trình Python trong mã VS
  • Cách chạy một chương trình trong Python IDLE
  • Cách chạy chương trình trong Jupyter Notebook
  • Cách đọc tệp văn bản trong Python
  • Cách cộng số trong Python
  • Cách yêu cầu đầu vào của người dùng trong Python
  • Cách gỡ lỗi trong Python
  • Cách tạo một chủ đề trong Python
  • Cách nhập thư viện bằng Python
  • Cách sử dụng trình quản lý gói PIP
  • Cách sử dụng các lớp trong Python
  • Cách đảo ngược chuỗi trong Python
  • Cách chuyển đổi một chuỗi thành int trong Python
  • Cách in trên cùng một dòng trong Python
  • Cách xóa các mục khỏi danh sách
  • Cách thêm vào từ điển trong Python
  • Cách tạo một ngoại lệ trong Python
  • Cách ném ngoại lệ trong Python
  • Cách dừng chương trình trong Python
  • Cách sử dụng xác nhận Python
  • Cách sử dụng trình biên dịch Python

Bạn có muốn học cách viết mã trực tuyến không?

Tôi có thể in trong bài kiểm tra đơn vị không?

Tùy thuộc vào môi trường phát triển của bạn. Các câu lệnh in can thiệp vào các bài kiểm tra đơn vị của bạn [ví dụ: nếu đầu ra được phân tích cú pháp bởi một số công cụ] rõ ràng là tuyệt đối tránh. Nên tránh in câu lệnh trong các bài kiểm tra đơn vị thành công .

PyUnit có giống với unittest không?

PyUnit là một cách dễ dàng để tạo các chương trình thử nghiệm đơn vị và UnitTest bằng Python . [Lưu ý rằng tài liệu. con trăn. org sử dụng tên "unittest", cũng là tên mô-đun. ]

Bạn có thể sử dụng đồ đạc pytest với unittest không?

pytest hỗ trợ chạy các bài kiểm tra dựa trên unittest của Python ngay lập tức . Nó có nghĩa là tận dụng các bộ thử nghiệm dựa trên unittest hiện có để sử dụng pytest làm trình chạy thử nghiệm và cũng cho phép điều chỉnh dần dần bộ thử nghiệm để tận dụng tối đa các tính năng của pytest.

Kết quả có thể xảy ra cho bài kiểm tra unittest là gì?

Mô-đun unittest tạo ra ba kết quả có thể xảy ra. Dưới đây là kết quả tiềm năng. OK - Nếu vượt qua tất cả các bài kiểm tra, nó sẽ trả về OK. Thất bại - Nó sẽ đưa ra một ngoại lệ AssertionError, nếu bất kỳ thử nghiệm nào không thành công

Chủ Đề