Python yêu cầu thời gian chờ giả định

00. 00 Hiện tại, đây là một thử nghiệm vô dụng bởi vì, như chúng ta đã thấy khi chúng tôi chạy nó mà không cài đặt

>>> mock.some_attribute

>>> mock.do_something[]

87, nó sẽ tự động tăng
>>> mock.some_attribute

>>> mock.do_something[]

88 vì tôi không chạy API ngày lễ trên máy của mình. Nhưng hãy thiết lập một tác dụng phụ khác

00. 16 Một trong những trường hợp ngoại lệ khác đi kèm với mô-đun

>>> mock.some_attribute

>>> mock.do_something[]

89 này là một
>>> mock.some_attribute

>>> mock.do_something[]

90,

00. 23 a

>>> mock.some_attribute

>>> mock.do_something[]

90 có nghĩa là bạn yêu cầu một máy chủ, máy chủ—có gì đó không ổn với nó hoặc nó rất chậm. Phản hồi bạn nhận được có thể gây ra ngoại lệ
>>> mock.some_attribute

>>> mock.do_something[]

90

00. 37 Như chúng ta đã thấy khi lần đầu tiên thực hiện yêu cầu

>>> mock.some_attribute

>>> mock.do_something[]

93 này, nó đã trả về một
>>> mock.some_attribute

>>> mock.do_something[]

88, hay đúng hơn là nó đã đưa ra một
>>> mock.some_attribute

>>> mock.do_something[]

88. Nó không gây ra lỗi
>>> mock.some_attribute

>>> mock.do_something[]

90, nhưng chúng tôi thực sự có thể kiểm tra lỗi
>>> mock.some_attribute

>>> mock.do_something[]

90 bằng cách đặt
>>> mock.some_attribute

>>> mock.do_something[]

87 trong một bài kiểm tra

00. 54 Vì vậy, hãy tiếp tục và sao chép bài kiểm tra này, chúng tôi sẽ sao chép bài kiểm tra này ở đây và chúng tôi sẽ tạo một bài kiểm tra mới có tên là

>>> mock.some_attribute

>>> mock.do_something[]

882

01. 09 Và sau đó ở đây chúng ta có thể đặt

>>> mock.some_attribute

>>> mock.do_something[]

87 không phải là
>>> mock.some_attribute

>>> mock.do_something[]

88 mà là
>>> mock.some_attribute

>>> mock.do_something[]

90. Và chúng tôi sẽ nói rằng nó tăng
>>> mock.some_attribute

>>> mock.do_something[]

90

01. 20 khi chúng tôi gọi

>>> mock.some_attribute

>>> mock.do_something[]

887. Và chúng ta sẽ vào bảng điều khiển và chạy thử nghiệm một lần nữa

01. 28 Và ở đó chúng tôi

>>> mock.some_attribute

>>> mock.do_something[]

888 và cả hai đều thành công. Vì vậy, điều này cho thấy rằng bạn có thể sử dụng thuộc tính
>>> mock.some_attribute

>>> mock.do_something[]

87 để chỉ định tác dụng phụ của hàm giả định, chẳng hạn như phương thức
>>> mock.some_attribute

>>> mock.do_something[]

890. Ngay bây giờ, bạn có thể không thấy giá trị của việc sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

87

01. 48 Có cảm giác như bạn đang gian lận trong một bài kiểm tra. Giống như, tại sao bạn chỉ kiểm tra, bạn biết đấy, tạo ra

>>> mock.some_attribute

>>> mock.do_something[]

87
>>> mock.some_attribute

>>> mock.do_something[]

90 và sau đó nó chỉ cần xác minh nó—chẳng hạn như, chẳng phải điều này luôn tăng
>>> mock.some_attribute

>>> mock.do_something[]

90 nếu bạn đặt
>>> mock.some_attribute

>>> mock.do_something[]

87 thành
>>> mock.some_attribute

>>> mock.do_something[]

90 sao?

02. 04 Nhưng chúng ta sẽ tiếp tục khám phá thêm một chút về

>>> mock.some_attribute

>>> mock.do_something[]

87 và hy vọng mọi thứ sẽ có ý nghĩa hơn và bạn sẽ thấy cách bạn có thể sử dụng nó để viết các bài kiểm tra tốt hơn

Khi bạn đang viết mã mạnh mẽ, các bài kiểm tra là điều cần thiết để xác minh rằng logic ứng dụng của bạn là chính xác, đáng tin cậy và hiệu quả. Tuy nhiên, giá trị của các bài kiểm tra của bạn phụ thuộc vào mức độ chúng thể hiện các tiêu chí này. Những trở ngại như logic phức tạp và sự phụ thuộc không thể đoán trước khiến việc viết các bài kiểm tra có giá trị trở nên khó khăn. Thư viện đối tượng mô phỏng Python,

>>> mock.some_attribute

>>> mock.do_something[]

5, có thể giúp bạn vượt qua những trở ngại này

Đến cuối bài viết này, bạn sẽ có thể

  • Tạo các đối tượng mô phỏng Python bằng cách sử dụng
    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    6
  • Khẳng định bạn đang sử dụng các đối tượng như bạn dự định
  • Kiểm tra dữ liệu sử dụng được lưu trữ trên mô hình Python của bạn
  • Định cấu hình các khía cạnh nhất định của các đối tượng mô phỏng Python của bạn
  • Thay thế mô phỏng của bạn cho các đối tượng thực bằng cách sử dụng
    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    7
  • Tránh các vấn đề phổ biến vốn có trong Python mocking

Bạn sẽ bắt đầu bằng cách xem chế nhạo là gì và nó sẽ cải thiện bài kiểm tra của bạn như thế nào

Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới

Mocking là gì?

Một đối tượng giả thay thế và bắt chước một đối tượng thực trong môi trường thử nghiệm. Nó là một công cụ linh hoạt và mạnh mẽ để cải thiện chất lượng bài kiểm tra của bạn

Một lý do để sử dụng các đối tượng mô phỏng Python là để kiểm soát hành vi mã của bạn trong quá trình thử nghiệm

Ví dụ: nếu mã của bạn tạo các yêu cầu HTTP cho các dịch vụ bên ngoài, thì các thử nghiệm của bạn chỉ thực thi có thể dự đoán được cho đến khi các dịch vụ đó hoạt động như bạn mong đợi. Đôi khi, một thay đổi tạm thời trong hành vi của các dịch vụ bên ngoài này có thể gây ra lỗi gián đoạn trong bộ thử nghiệm của bạn

Do đó, sẽ tốt hơn nếu bạn kiểm tra mã của mình trong một môi trường được kiểm soát. Thay thế yêu cầu thực tế bằng một đối tượng giả sẽ cho phép bạn mô phỏng sự ngừng hoạt động của dịch vụ bên ngoài và phản hồi thành công theo cách có thể dự đoán được

Đôi khi, rất khó để kiểm tra một số khu vực nhất định trong cơ sở mã của bạn. Những lĩnh vực như vậy bao gồm các khối

>>> mock.some_attribute

>>> mock.do_something[]

8 và các câu lệnh
>>> mock.some_attribute

>>> mock.do_something[]

9 khó thỏa mãn. Sử dụng các đối tượng mô phỏng Python có thể giúp bạn kiểm soát đường dẫn thực thi mã của mình để tiếp cận các khu vực này và cải thiện phạm vi mã của bạn

Một lý do khác để sử dụng các đối tượng giả là để hiểu rõ hơn cách bạn đang sử dụng các đối tượng thực của chúng trong mã của mình. Đối tượng mô phỏng Python chứa dữ liệu về cách sử dụng mà bạn có thể kiểm tra, chẳng hạn như

  • Nếu bạn đã gọi một phương thức
  • Cách bạn gọi phương thức
  • Tần suất bạn gọi phương thức

Hiểu chức năng của một đối tượng giả là bước đầu tiên để học cách sử dụng một đối tượng giả.

Bây giờ, bạn sẽ thấy cách sử dụng các đối tượng giả trong Python

Loại bỏ các quảng cáo

Thư viện mô phỏng Python

Thư viện đối tượng mô phỏng Python là

>>> mock.some_attribute

>>> mock.do_something[]

5. Nó cung cấp một cách dễ dàng để giới thiệu mô phỏng vào các bài kiểm tra của bạn

Ghi chú. Thư viện tiêu chuẩn bao gồm

>>> mock.some_attribute

>>> mock.do_something[]

5 trong Python 3. 3 trở lên. Nếu bạn đang sử dụng phiên bản Python cũ hơn, bạn sẽ cần cài đặt backport chính thức của thư viện. Để làm như vậy, hãy cài đặt
>>> json = Mock[]
>>> json.dumps[]

2 từ PyPI

________số 8

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp một lớp có tên là
>>> mock.some_attribute

>>> mock.do_something[]

6 mà bạn sẽ sử dụng để bắt chước các đối tượng thực trong cơ sở mã của mình.
>>> mock.some_attribute

>>> mock.do_something[]

6 cung cấp dữ liệu sâu sắc và linh hoạt đáng kinh ngạc. Điều này, cùng với các lớp con của nó, sẽ đáp ứng hầu hết các nhu cầu mô phỏng Python mà bạn sẽ gặp phải trong các bài kiểm tra của mình

Thư viện cũng cung cấp một chức năng, được gọi là

>>> mock.some_attribute

>>> mock.do_something[]

7, thay thế các đối tượng thực trong mã của bạn bằng các phiên bản
>>> mock.some_attribute

>>> mock.do_something[]

6. Bạn có thể sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

7 làm công cụ trang trí hoặc trình quản lý ngữ cảnh, cho phép bạn kiểm soát phạm vi mà đối tượng sẽ được mô phỏng. Sau khi thoát khỏi phạm vi được chỉ định,
>>> mock.some_attribute

>>> mock.do_something[]

7 sẽ dọn sạch mã của bạn bằng cách thay thế các đối tượng bị mô phỏng bằng các đối tượng ban đầu của chúng

Cuối cùng,

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp giải pháp cho một số vấn đề vốn có trong các đối tượng chế nhạo

Bây giờ, bạn đã hiểu rõ hơn về chế nhạo là gì và thư viện mà bạn sẽ sử dụng để làm điều đó. Hãy đi sâu vào và khám phá những tính năng và chức năng mà

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp

Đối tượng
>>> mock.some_attribute

>>> mock.do_something[]

6

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp một lớp cơ sở cho các đối tượng mô phỏng có tên là
>>> mock.some_attribute

>>> mock.do_something[]

6. Các trường hợp sử dụng cho
>>> mock.some_attribute

>>> mock.do_something[]

6 thực tế là vô hạn vì
>>> mock.some_attribute

>>> mock.do_something[]

6 rất linh hoạt

Bắt đầu bằng cách khởi tạo một phiên bản

>>> mock.some_attribute

>>> mock.do_something[]

6 mới

>>>

>>> mock.some_attribute

>>> mock.do_something[]

4

Bây giờ, bạn có thể thay thế một đối tượng trong mã của mình bằng

>>> mock.some_attribute

>>> mock.do_something[]

6 mới. Bạn có thể làm điều này bằng cách chuyển nó làm đối số cho một hàm hoặc bằng cách xác định lại một đối tượng khác

>>> mock.some_attribute

>>> mock.do_something[]

6

Khi bạn thay thế một đối tượng trong mã của mình,

>>> mock.some_attribute

>>> mock.do_something[]

6 phải trông giống như đối tượng thực mà nó đang thay thế. Nếu không, mã của bạn sẽ không thể sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

6 thay cho đối tượng ban đầu

Ví dụ: nếu bạn đang mô phỏng thư viện

>>> mock.some_attribute

>>> mock.do_something[]

91 và chương trình của bạn gọi
>>> mock.some_attribute

>>> mock.do_something[]

92, thì đối tượng mô phỏng Python của bạn cũng phải chứa
>>> mock.some_attribute

>>> mock.do_something[]

92

Tiếp theo, bạn sẽ thấy cách

>>> mock.some_attribute

>>> mock.do_something[]

6 giải quyết thách thức này

Các thuộc tính và phương thức lười biếng

Một

>>> mock.some_attribute

>>> mock.do_something[]

6 phải mô phỏng bất kỳ đối tượng nào mà nó thay thế. Để đạt được sự linh hoạt như vậy, nó tạo ra các thuộc tính của nó khi bạn truy cập chúng

>>>

>>> mock.some_attribute

>>> mock.do_something[]

>>> mock.some_attribute

>>> mock.do_something[]

6 có thể tạo các thuộc tính tùy ý một cách nhanh chóng, nên nó phù hợp để thay thế bất kỳ đối tượng nào

Sử dụng một ví dụ từ trước đó, nếu bạn đang chế nhạo thư viện

>>> mock.some_attribute

>>> mock.do_something[]

91 và bạn gọi
>>> mock.some_attribute

>>> mock.do_something[]

92, đối tượng giả lập Python sẽ tạo phương thức để giao diện của nó có thể khớp với giao diện của thư viện

>>>

>>> json = Mock[]
>>> json.dumps[]

Lưu ý hai đặc điểm chính của phiên bản mô phỏng này của

>>> mock.some_attribute

>>> mock.do_something[]

92

  1. Không giống như

    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    92 thực, phương thức giả định này không yêu cầu đối số. Trên thực tế, nó sẽ chấp nhận mọi đối số mà bạn chuyển cho nó

  2. Giá trị trả về của

    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    92 cũng là một
    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    6. Khả năng của
    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    6 để xác định đệ quy các giả khác cho phép bạn sử dụng các giả trong các tình huống phức tạp

>>>

>>> mock.some_attribute

>>> mock.do_something[]

4

Vì giá trị trả về của mỗi phương thức mô phỏng cũng là một

>>> mock.some_attribute

>>> mock.do_something[]

6, nên bạn có thể sử dụng các mô phỏng của mình theo nhiều cách

Mô phỏng rất linh hoạt, nhưng chúng cũng cung cấp nhiều thông tin. Tiếp theo, bạn sẽ tìm hiểu cách sử dụng mô phỏng để hiểu rõ hơn về mã của mình

Loại bỏ các quảng cáo

Xác nhận và Kiểm tra

Phiên bản

>>> mock.some_attribute

>>> mock.do_something[]

6 lưu trữ dữ liệu về cách bạn sử dụng chúng. Chẳng hạn, bạn có thể xem liệu bạn đã gọi một phương thức hay chưa, bạn đã gọi phương thức đó như thế nào, v.v. Có hai cách chính để sử dụng thông tin này

Đầu tiên, bạn có thể khẳng định rằng chương trình của bạn đã sử dụng một đối tượng như bạn mong đợi

>>>

>>> mock.some_attribute

>>> mock.do_something[]

9

>>> mock.some_attribute

>>> mock.do_something[]

86 đảm bảo rằng bạn đã gọi phương thức giả lập trong khi
>>> mock.some_attribute

>>> mock.do_something[]

87 kiểm tra xem bạn đã gọi phương thức đó đúng một lần chưa

Cả hai hàm xác nhận đều có các biến thể cho phép bạn kiểm tra các đối số được truyền cho phương thức giả lập

  • >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    88
  • >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    89

Để chuyển các xác nhận này, bạn phải gọi phương thức giả với cùng các đối số mà bạn chuyển cho phương thức thực tế

>>>

>>> mock.some_attribute

>>> mock.do_something[]

8

>>> mock.some_attribute

>>> mock.do_something[]

30 đã đưa ra một
>>> mock.some_attribute

>>> mock.do_something[]

31 vì nó dự kiến ​​bạn gọi
>>> mock.some_attribute

>>> mock.do_something[]

32 bằng một đối số vị trí, nhưng thực ra bạn đã gọi nó bằng một đối số từ khóa.
>>> mock.some_attribute

>>> mock.do_something[]

33 nhận định này đúng

Thứ hai, bạn có thể xem các thuộc tính đặc biệt để hiểu ứng dụng của bạn đã sử dụng một đối tượng như thế nào

>>>

>>> mock.some_attribute

>>> mock.do_something[]

3

Bạn có thể viết bài kiểm tra bằng cách sử dụng các thuộc tính này để đảm bảo rằng các đối tượng của bạn hoạt động như bạn dự định

Giờ đây, bạn có thể tạo mô hình giả và kiểm tra dữ liệu sử dụng của chúng. Tiếp theo, bạn sẽ thấy cách tùy chỉnh các phương thức giả định để chúng trở nên hữu ích hơn trong môi trường thử nghiệm của bạn

Quản lý giá trị trả về của Mock

Một lý do để sử dụng mô phỏng là để kiểm soát hành vi mã của bạn trong quá trình kiểm tra. Một cách để làm điều này là chỉ định giá trị trả về của hàm. Hãy sử dụng một ví dụ để xem cách thức hoạt động của nó

Đầu tiên, tạo một tệp có tên

>>> mock.some_attribute

>>> mock.do_something[]

34. Thêm
>>> mock.some_attribute

>>> mock.do_something[]

35, một hàm sử dụng thư viện
>>> mock.some_attribute

>>> mock.do_something[]

36 của Python để xác định xem hôm nay có phải là một ngày trong tuần hay không. Cuối cùng, viết một bài kiểm tra khẳng định rằng chức năng hoạt động như mong đợi

>>> mock.some_attribute

>>> mock.do_something[]

1

Vì bạn đang kiểm tra nếu hôm nay là ngày trong tuần nên kết quả sẽ phụ thuộc vào ngày bạn chạy kiểm tra

>>> mock.some_attribute

>>> mock.do_something[]

40

Nếu lệnh này không tạo ra kết quả, xác nhận đã thành công. Thật không may, nếu bạn chạy lệnh vào cuối tuần, bạn sẽ nhận được một

>>> mock.some_attribute

>>> mock.do_something[]

31

>>> mock.some_attribute

>>> mock.do_something[]

41

Khi viết bài kiểm tra, điều quan trọng là đảm bảo rằng kết quả có thể dự đoán được. Bạn có thể sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

6 để loại bỏ sự không chắc chắn khỏi mã của mình trong quá trình thử nghiệm. Trong trường hợp này, bạn có thể giả định
>>> mock.some_attribute

>>> mock.do_something[]

36 và đặt
>>> mock.some_attribute

>>> mock.do_something[]

10 cho
>>> mock.some_attribute

>>> mock.do_something[]

11 thành một ngày mà bạn chọn

>>> mock.some_attribute

>>> mock.do_something[]

42

Trong ví dụ,

>>> mock.some_attribute

>>> mock.do_something[]

11 là một phương thức giả định. Bạn đã loại bỏ sự không nhất quán bằng cách chỉ định một ngày cụ thể cho
>>> mock.some_attribute

>>> mock.do_something[]

10 của mô hình. Theo cách đó, khi bạn gọi
>>> mock.some_attribute

>>> mock.do_something[]

11, nó sẽ trả về
>>> mock.some_attribute

>>> mock.do_something[]

36 mà bạn đã chỉ định

Trong lần kiểm tra đầu tiên, bạn đảm bảo rằng

>>> mock.some_attribute

>>> mock.do_something[]

16 là một ngày trong tuần. Trong bài kiểm tra thứ hai, bạn xác minh rằng
>>> mock.some_attribute

>>> mock.do_something[]

17 không phải là ngày trong tuần. Bây giờ, bạn chạy thử nghiệm vào ngày nào không quan trọng vì bạn đã chế nhạo
>>> mock.some_attribute

>>> mock.do_something[]

36 và có quyền kiểm soát hành vi của đối tượng

Đọc thêm. Mặc dù chế nhạo

>>> mock.some_attribute

>>> mock.do_something[]

36 như thế này là một ví dụ thực hành tốt để sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

6, nhưng đã tồn tại một thư viện tuyệt vời để chế nhạo
>>> mock.some_attribute

>>> mock.do_something[]

36 có tên là
>>> mock.some_attribute

>>> mock.do_something[]

402

Khi xây dựng các bài kiểm tra của mình, bạn có thể sẽ gặp các trường hợp mà việc chế nhạo giá trị trả về của một hàm là không đủ. Điều này là do các chức năng thường phức tạp hơn luồng logic một chiều đơn giản

Đôi khi, bạn sẽ muốn làm cho các hàm trả về các giá trị khác nhau khi bạn gọi chúng nhiều lần hoặc thậm chí đưa ra các ngoại lệ. Bạn có thể làm điều này bằng cách sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

403

Loại bỏ các quảng cáo

Quản lý tác dụng phụ của Mock

Bạn có thể kiểm soát hành vi của mã bằng cách chỉ định tác dụng phụ của chức năng giả định. Một

>>> mock.some_attribute

>>> mock.do_something[]

403 xác định điều gì sẽ xảy ra khi bạn gọi hàm giả lập

Để kiểm tra cách thức hoạt động của tính năng này, hãy thêm một chức năng mới vào

>>> mock.some_attribute

>>> mock.do_something[]

34

>>> mock.some_attribute

>>> mock.do_something[]

43

________ 2406 yêu cầu máy chủ ________ 2407 cho một loạt ngày nghỉ. Nếu máy chủ phản hồi thành công,

>>> mock.some_attribute

>>> mock.do_something[]

406 sẽ trả về một từ điển. Nếu không, phương thức sẽ trả về
>>> mock.some_attribute

>>> mock.do_something[]

409

Bạn có thể kiểm tra xem

>>> mock.some_attribute

>>> mock.do_something[]

406 sẽ phản hồi như thế nào khi hết thời gian chờ kết nối bằng cách đặt
>>> mock.some_attribute

>>> mock.do_something[]

411

Đối với ví dụ này, bạn sẽ chỉ thấy mã có liên quan từ

>>> mock.some_attribute

>>> mock.do_something[]

34. Bạn sẽ xây dựng một trường hợp thử nghiệm bằng thư viện
>>> mock.some_attribute

>>> mock.do_something[]

413 của Python

>>> mock.some_attribute

>>> mock.do_something[]

44

Bạn sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

414 để xác minh rằng
>>> mock.some_attribute

>>> mock.do_something[]

406 đưa ra một ngoại lệ do tác dụng phụ mới của
>>> mock.some_attribute

>>> mock.do_something[]

416

Chạy thử nghiệm này để xem kết quả thử nghiệm của bạn

>>> mock.some_attribute

>>> mock.do_something[]

45

Nếu bạn muốn năng động hơn một chút, bạn có thể đặt

>>> mock.some_attribute

>>> mock.do_something[]

403 thành một hàm mà
>>> mock.some_attribute

>>> mock.do_something[]

6 sẽ gọi khi bạn gọi phương thức giả lập của mình. Mô phỏng chia sẻ các đối số và giá trị trả về của hàm
>>> mock.some_attribute

>>> mock.do_something[]

403

>>> mock.some_attribute

>>> mock.do_something[]

46

Trước tiên, bạn đã tạo

>>> mock.some_attribute

>>> mock.do_something[]

420, lấy một URL, ghi nhật ký một số đầu ra bằng cách sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

421, sau đó trả về phản hồi
>>> mock.some_attribute

>>> mock.do_something[]

6. Tiếp theo, bạn đặt
>>> mock.some_attribute

>>> mock.do_something[]

403 của
>>> mock.some_attribute

>>> mock.do_something[]

416 thành
>>> mock.some_attribute

>>> mock.do_something[]

420, mà bạn sẽ sử dụng khi gọi
>>> mock.some_attribute

>>> mock.do_something[]

406. Khi bạn chạy thử nghiệm của mình, bạn sẽ thấy rằng
>>> mock.some_attribute

>>> mock.do_something[]

416 chuyển tiếp các đối số của nó tới
>>> mock.some_attribute

>>> mock.do_something[]

420, sau đó chấp nhận giá trị trả về và cũng trả về giá trị đó

>>> mock.some_attribute

>>> mock.do_something[]

47

Tuyệt quá. Các câu lệnh

>>> mock.some_attribute

>>> mock.do_something[]

421 đã ghi lại các giá trị chính xác. Ngoài ra,
>>> mock.some_attribute

>>> mock.do_something[]

406 đã trả lại từ điển ngày lễ

>>> mock.some_attribute

>>> mock.do_something[]

403 cũng có thể là một iterable. Có thể lặp lại phải bao gồm các giá trị trả về, ngoại lệ hoặc hỗn hợp của cả hai. Iterable sẽ tạo ra giá trị tiếp theo của nó mỗi khi bạn gọi phương thức giả lập của mình. Ví dụ: bạn có thể kiểm tra thử lại sau khi
>>> mock.some_attribute

>>> mock.do_something[]

432 trả về phản hồi thành công

>>> mock.some_attribute

>>> mock.do_something[]

48

Lần đầu tiên bạn gọi ______ 2406, _______ 2416 tăng ________ 2432. Lần thứ hai, phương thức trả về một từ điển ngày lễ hợp lệ. Các tác dụng phụ này khớp với thứ tự chúng xuất hiện trong danh sách được chuyển đến

>>> mock.some_attribute

>>> mock.do_something[]

403

Bạn có thể đặt trực tiếp

>>> mock.some_attribute

>>> mock.do_something[]

10 và
>>> mock.some_attribute

>>> mock.do_something[]

403 trên
>>> mock.some_attribute

>>> mock.do_something[]

6. Tuy nhiên, vì một đối tượng mô phỏng Python cần linh hoạt trong việc tạo các thuộc tính của nó, nên có một cách tốt hơn để định cấu hình các cài đặt này và các cài đặt khác

Loại bỏ các quảng cáo

Cấu hình Mock của bạn

Bạn có thể định cấu hình một

>>> mock.some_attribute

>>> mock.do_something[]

6 để thiết lập một số hành vi của đối tượng. Một số thành viên có thể định cấu hình bao gồm
>>> mock.some_attribute

>>> mock.do_something[]

403,
>>> mock.some_attribute

>>> mock.do_something[]

10 và
>>> mock.some_attribute

>>> mock.do_something[]

443. Bạn cấu hình một
>>> mock.some_attribute

>>> mock.do_something[]

6 khi bạn tạo một hoặc khi bạn sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

445

Bạn có thể định cấu hình một

>>> mock.some_attribute

>>> mock.do_something[]

6 bằng cách chỉ định các thuộc tính nhất định khi bạn khởi tạo một đối tượng

>>>

>>> mock.some_attribute

>>> mock.do_something[]

49

Mặc dù

>>> mock.some_attribute

>>> mock.do_something[]

403 và
>>> mock.some_attribute

>>> mock.do_something[]

10 có thể được đặt trên chính phiên bản
>>> mock.some_attribute

>>> mock.do_something[]

6, nhưng các thuộc tính khác như
>>> mock.some_attribute

>>> mock.do_something[]

443 chỉ có thể được đặt thông qua
>>> mock.some_attribute

>>> mock.do_something[]

451 hoặc
>>> mock.some_attribute

>>> mock.do_something[]

445. Nếu bạn cố gắng đặt
>>> mock.some_attribute

>>> mock.do_something[]

443 của
>>> mock.some_attribute

>>> mock.do_something[]

6 trong phiên bản, bạn sẽ nhận được một kết quả khác

>>>

>>> mock.some_attribute

>>> mock.do_something[]

60

>>> mock.some_attribute

>>> mock.do_something[]

443 là thuộc tính chung cho các đối tượng sử dụng. Vì vậy,
>>> mock.some_attribute

>>> mock.do_something[]

6 không cho phép bạn đặt giá trị đó trên phiên bản giống như cách bạn có thể làm với
>>> mock.some_attribute

>>> mock.do_something[]

10 hoặc
>>> mock.some_attribute

>>> mock.do_something[]

403. Nếu bạn truy cập
>>> mock.some_attribute

>>> mock.do_something[]

459, bạn sẽ tạo thuộc tính
>>> mock.some_attribute

>>> mock.do_something[]

443 thay vì định cấu hình mô phỏng của mình

Bạn có thể định cấu hình một

>>> mock.some_attribute

>>> mock.do_something[]

6 hiện có bằng cách sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

445

>>>

>>> mock.some_attribute

>>> mock.do_something[]

61

Bằng cách giải nén từ điển thành

>>> mock.some_attribute

>>> mock.do_something[]

445 hoặc
>>> mock.some_attribute

>>> mock.do_something[]

464, bạn thậm chí có thể định cấu hình các thuộc tính của đối tượng mô phỏng Python của mình. Sử dụng cấu hình
>>> mock.some_attribute

>>> mock.do_something[]

6, bạn có thể đơn giản hóa một ví dụ trước đó

>>> mock.some_attribute

>>> mock.do_something[]

62

Bây giờ, bạn có thể tạo và cấu hình các đối tượng mô phỏng Python. Bạn cũng có thể sử dụng mô phỏng để kiểm soát hành vi của ứng dụng của mình. Cho đến nay, bạn đã sử dụng các mô hình giả làm đối số cho các hàm hoặc các đối tượng vá lỗi trong cùng một mô-đun với các thử nghiệm của mình

Tiếp theo, bạn sẽ học cách thay thế mô hình giả của mình bằng các đối tượng thực trong các mô-đun khác

>>> mock.some_attribute

>>> mock.do_something[]

7

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp một cơ chế mạnh mẽ để mô phỏng các đối tượng, được gọi là
>>> mock.some_attribute

>>> mock.do_something[]

7, tìm kiếm một đối tượng trong một mô-đun nhất định và thay thế đối tượng đó bằng một
>>> mock.some_attribute

>>> mock.do_something[]

6

Thông thường, bạn sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm công cụ trang trí hoặc trình quản lý bối cảnh để cung cấp phạm vi mà bạn sẽ mô phỏng đối tượng đích

>>> mock.some_attribute

>>> mock.do_something[]

7 với tư cách là Người trang trí

Nếu bạn muốn mô phỏng một đối tượng trong toàn bộ chức năng thử nghiệm của mình, bạn có thể sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm công cụ trang trí chức năng

Để xem điều này hoạt động như thế nào, hãy sắp xếp lại tệp

>>> mock.some_attribute

>>> mock.do_something[]

34 của bạn bằng cách đặt logic và kiểm tra vào các tệp riêng biệt

>>> mock.some_attribute

>>> mock.do_something[]

63

Các chức năng này hiện nằm trong tệp riêng của chúng, tách biệt với các thử nghiệm của chúng. Tiếp theo, bạn sẽ tạo lại các bài kiểm tra của mình trong một tệp có tên là

>>> mock.some_attribute

>>> mock.do_something[]

474

Cho đến thời điểm này, bạn đã vá các đối tượng trong tệp mà chúng tồn tại. Bản vá khỉ là việc thay thế một đối tượng bằng một đối tượng khác trong thời gian chạy. Bây giờ, bạn sẽ sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 để thay thế các đối tượng của mình trong
>>> mock.some_attribute

>>> mock.do_something[]

34

>>> mock.some_attribute

>>> mock.do_something[]

64

Ban đầu, bạn đã tạo một

>>> mock.some_attribute

>>> mock.do_something[]

6 và vá
>>> mock.some_attribute

>>> mock.do_something[]

478 trong phạm vi cục bộ. Bây giờ, bạn cần truy cập thư viện
>>> mock.some_attribute

>>> mock.do_something[]

478 trong
>>> mock.some_attribute

>>> mock.do_something[]

34 từ
>>> mock.some_attribute

>>> mock.do_something[]

474

Trong trường hợp này, bạn đã sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm công cụ trang trí và chuyển đường dẫn của đối tượng mục tiêu. Đường dẫn đích là
>>> mock.some_attribute

>>> mock.do_something[]

483 bao gồm tên mô-đun và đối tượng

Bạn cũng đã xác định một tham số mới cho chức năng kiểm tra.

>>> mock.some_attribute

>>> mock.do_something[]

7 sử dụng tham số này để chuyển đối tượng giả vào thử nghiệm của bạn. Từ đó, bạn có thể sửa đổi mô phỏng hoặc đưa ra các xác nhận khi cần thiết

Bạn có thể thực hiện mô-đun thử nghiệm này để đảm bảo mô-đun hoạt động như mong đợi

>>> mock.some_attribute

>>> mock.do_something[]

65

Chi tiết kỹ thuật.

>>> mock.some_attribute

>>> mock.do_something[]

7 trả về một thể hiện của
>>> mock.some_attribute

>>> mock.do_something[]

486, là một lớp con của
>>> mock.some_attribute

>>> mock.do_something[]

6.
>>> mock.some_attribute

>>> mock.do_something[]

486 rất hữu ích vì nó thực hiện hầu hết các phương pháp kỳ diệu cho bạn, chẳng hạn như
>>> mock.some_attribute

>>> mock.do_something[]

489,
>>> mock.some_attribute

>>> mock.do_something[]

490 và
>>> mock.some_attribute

>>> mock.do_something[]

491, với các giá trị mặc định hợp lý

Sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm công cụ trang trí hoạt động tốt trong ví dụ này. Trong một số trường hợp, nó dễ đọc hơn, hiệu quả hơn hoặc dễ dàng hơn khi sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

7 làm trình quản lý ngữ cảnh

Loại bỏ các quảng cáo

>>> mock.some_attribute

>>> mock.do_something[]

7 với tư cách là Người quản lý ngữ cảnh

Đôi khi, bạn sẽ muốn sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm trình quản lý ngữ cảnh hơn là trình trang trí. Một số lý do tại sao bạn có thể thích trình quản lý bối cảnh bao gồm những điều sau đây

  • Bạn chỉ muốn giả định một đối tượng cho một phần của phạm vi thử nghiệm
  • Bạn đã sử dụng quá nhiều trình trang trí hoặc tham số, điều này làm ảnh hưởng đến khả năng đọc bài kiểm tra của bạn

Để sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 làm trình quản lý bối cảnh, bạn sử dụng câu lệnh
>>> mock.some_attribute

>>> mock.do_something[]

497 của Python

>>> mock.some_attribute

>>> mock.do_something[]

66

Khi thử nghiệm thoát khỏi câu lệnh

>>> mock.some_attribute

>>> mock.do_something[]

497,
>>> mock.some_attribute

>>> mock.do_something[]

7 sẽ thay thế đối tượng bị chế nhạo bằng đối tượng ban đầu

Cho đến bây giờ, bạn đã chế nhạo toàn bộ đối tượng, nhưng đôi khi bạn sẽ chỉ muốn chế nhạo một phần của đối tượng

Vá các thuộc tính của đối tượng

Giả sử bạn chỉ muốn chế nhạo một phương thức của một đối tượng thay vì toàn bộ đối tượng. Bạn có thể làm như vậy bằng cách sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

600

Ví dụ:

>>> mock.some_attribute

>>> mock.do_something[]

601 thực sự chỉ cần chế nhạo
>>> mock.some_attribute

>>> mock.do_something[]

602 và đặt
>>> mock.some_attribute

>>> mock.do_something[]

403 của nó thành
>>> mock.some_attribute

>>> mock.do_something[]

432

>>> mock.some_attribute

>>> mock.do_something[]

67

Trong ví dụ này, bạn chỉ chế nhạo

>>> mock.some_attribute

>>> mock.do_something[]

416 chứ không phải tất cả
>>> mock.some_attribute

>>> mock.do_something[]

478. Mọi thuộc tính khác vẫn giữ nguyên

>>> mock.some_attribute

>>> mock.do_something[]

607 có các tham số cấu hình giống như
>>> mock.some_attribute

>>> mock.do_something[]

7. Nhưng thay vì chuyển đường dẫn của mục tiêu, bạn cung cấp chính đối tượng mục tiêu làm tham số đầu tiên. Tham số thứ hai là thuộc tính của đối tượng đích mà bạn đang cố mô phỏng. Bạn cũng có thể sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

607 làm trình quản lý bối cảnh như
>>> mock.some_attribute

>>> mock.do_something[]

7

Đọc thêm. Bên cạnh các đối tượng và thuộc tính, bạn cũng có thể

>>> mock.some_attribute

>>> mock.do_something[]

7 từ điển với
>>> mock.some_attribute

>>> mock.do_something[]

612

Học cách sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

7 là rất quan trọng để mô phỏng các đối tượng trong các mô-đun khác. Tuy nhiên, đôi khi không rõ đường dẫn của đối tượng mục tiêu là gì

Vá ở đâu

Biết nơi để yêu cầu

>>> mock.some_attribute

>>> mock.do_something[]

7 tìm kiếm đối tượng mà bạn muốn chế nhạo là rất quan trọng vì nếu bạn chọn sai vị trí mục tiêu, kết quả của
>>> mock.some_attribute

>>> mock.do_something[]

7 có thể là điều bạn không mong đợi

Giả sử bạn đang chế nhạo

>>> mock.some_attribute

>>> mock.do_something[]

35 trong
>>> mock.some_attribute

>>> mock.do_something[]

34 bằng cách sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

7

>>>

>>> mock.some_attribute

>>> mock.do_something[]

68

Trước tiên, bạn nhập

>>> mock.some_attribute

>>> mock.do_something[]

34. Sau đó, bạn vá
>>> mock.some_attribute

>>> mock.do_something[]

35, thay thế nó bằng một
>>> mock.some_attribute

>>> mock.do_something[]

6. Tuyệt quá. Điều này đang làm việc như mong đợi

Bây giờ, hãy thay đổi ví dụ này một chút và nhập hàm trực tiếp

>>>

>>> mock.some_attribute

>>> mock.do_something[]

69

Ghi chú. Tùy thuộc vào ngày bạn đọc hướng dẫn này, đầu ra bảng điều khiển của bạn có thể là

>>> mock.some_attribute

>>> mock.do_something[]

622 hoặc
>>> mock.some_attribute

>>> mock.do_something[]

623. Điều quan trọng là đầu ra không phải là
>>> mock.some_attribute

>>> mock.do_something[]

6 như trước đây

Lưu ý rằng mặc dù vị trí mục tiêu bạn đã chuyển đến

>>> mock.some_attribute

>>> mock.do_something[]

7 không thay đổi, nhưng kết quả của việc gọi
>>> mock.some_attribute

>>> mock.do_something[]

35 lại khác. Sự khác biệt là do bạn đã thay đổi cách nhập chức năng

>>> mock.some_attribute

>>> mock.do_something[]

627 liên kết hàm thực với phạm vi cục bộ. Vì vậy, mặc dù bạn
>>> mock.some_attribute

>>> mock.do_something[]

7 hàm sau đó, nhưng bạn bỏ qua mô phỏng vì bạn đã có một tham chiếu cục bộ đến hàm chưa được mô phỏng

Một nguyên tắc nhỏ là

>>> mock.some_attribute

>>> mock.do_something[]

7 đối tượng mà nó được tra cứu

Trong ví dụ đầu tiên, chế nhạo

>>> mock.some_attribute

>>> mock.do_something[]

630 hoạt động vì bạn tra cứu hàm trong mô-đun
>>> mock.some_attribute

>>> mock.do_something[]

631. Trong ví dụ thứ hai, bạn có một tham chiếu cục bộ tới
>>> mock.some_attribute

>>> mock.do_something[]

35. Vì bạn sử dụng chức năng được tìm thấy trong phạm vi cục bộ, bạn nên thử chức năng cục bộ

>>>

>>> mock.some_attribute

>>> mock.do_something[]

0

Bây giờ, bạn đã nắm chắc sức mạnh của

>>> mock.some_attribute

>>> mock.do_something[]

7. Bạn đã biết cách
>>> mock.some_attribute

>>> mock.do_something[]

7 đối tượng và thuộc tính cũng như nơi vá chúng

Tiếp theo, bạn sẽ thấy một số vấn đề phổ biến cố hữu trong việc mô phỏng đối tượng và các giải pháp mà

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp

Loại bỏ các quảng cáo

Các vấn đề chế nhạo thường gặp

Các đối tượng chế nhạo có thể gây ra một số vấn đề trong các bài kiểm tra của bạn. Một số vấn đề cố hữu trong chế giễu trong khi những vấn đề khác chỉ dành riêng cho

>>> mock.some_attribute

>>> mock.do_something[]

5. Hãy nhớ rằng có những vấn đề khác với chế nhạo không được đề cập trong hướng dẫn này

Những cái được đề cập ở đây giống nhau ở chỗ vấn đề mà chúng gây ra về cơ bản là giống nhau. Trong mỗi trường hợp, các xác nhận kiểm tra là không liên quan. Mặc dù ý định của mỗi giả là hợp lệ, nhưng bản thân các giả không phải là

Thay đổi đối với giao diện đối tượng và lỗi chính tả

Các lớp và định nghĩa hàm luôn thay đổi. Khi giao diện của một đối tượng thay đổi, bất kỳ thử nghiệm nào dựa trên

>>> mock.some_attribute

>>> mock.do_something[]

6 của đối tượng đó có thể trở nên không liên quan

Ví dụ: bạn đổi tên một phương thức nhưng quên rằng một bài kiểm tra mô phỏng phương thức đó và gọi _____2638. Sau khi thay đổi,

>>> mock.some_attribute

>>> mock.do_something[]

638 vẫn là
>>> mock.some_attribute

>>> mock.do_something[]

622. Tuy nhiên, xác nhận không hữu ích vì phương thức không còn tồn tại

Các bài kiểm tra không liên quan nghe có vẻ không quan trọng, nhưng nếu chúng là bài kiểm tra duy nhất của bạn và bạn cho rằng chúng hoạt động bình thường, tình huống có thể là thảm họa cho ứng dụng của bạn

Một vấn đề cụ thể đối với

>>> mock.some_attribute

>>> mock.do_something[]

6 là lỗi chính tả có thể làm hỏng bài kiểm tra. Nhớ lại rằng một
>>> mock.some_attribute

>>> mock.do_something[]

6 tạo giao diện của nó khi bạn truy cập các thành viên của nó. Vì vậy, bạn sẽ vô tình tạo ra một thuộc tính mới nếu viết sai tên của nó

Nếu bạn gọi

>>> mock.some_attribute

>>> mock.do_something[]

643 thay vì
>>> mock.some_attribute

>>> mock.do_something[]

86, bài kiểm tra của bạn sẽ không tăng
>>> mock.some_attribute

>>> mock.do_something[]

31. Điều này là do bạn đã tạo một phương thức mới trên đối tượng mô phỏng Python có tên là
>>> mock.some_attribute

>>> mock.do_something[]

643 thay vì đánh giá một xác nhận thực tế

Chi tiết kỹ thuật. Thật thú vị,

>>> mock.some_attribute

>>> mock.do_something[]

647 là một lỗi chính tả đặc biệt của
>>> mock.some_attribute

>>> mock.do_something[]

648. Nếu bạn cố gắng truy cập một thuộc tính bắt đầu bằng
>>> mock.some_attribute

>>> mock.do_something[]

647 [hoặc
>>> mock.some_attribute

>>> mock.do_something[]

648], thì
>>> mock.some_attribute

>>> mock.do_something[]

6 sẽ tự động tăng
>>> mock.some_attribute

>>> mock.do_something[]

652

Những sự cố này xảy ra khi bạn mô phỏng các đối tượng trong cơ sở mã của riêng bạn. Một vấn đề khác phát sinh khi bạn mô phỏng các đối tượng tương tác với các cơ sở mã bên ngoài

Thay đổi phụ thuộc bên ngoài

Hãy tưởng tượng lại rằng mã của bạn yêu cầu một API bên ngoài. Trong trường hợp này, phụ thuộc bên ngoài là API dễ bị thay đổi mà không cần sự đồng ý của bạn

Một mặt, kiểm tra đơn vị kiểm tra các thành phần riêng biệt của mã. Vì vậy, việc mô phỏng mã thực hiện yêu cầu giúp bạn kiểm tra các thành phần biệt lập của mình trong các điều kiện được kiểm soát. Tuy nhiên, nó cũng thể hiện một vấn đề tiềm ẩn

Nếu một phụ thuộc bên ngoài thay đổi giao diện của nó, các đối tượng mô phỏng Python của bạn sẽ trở nên không hợp lệ. Nếu điều này xảy ra [và thay đổi giao diện là một sự cố], các thử nghiệm của bạn sẽ vượt qua vì các đối tượng giả của bạn đã che dấu thay đổi, nhưng mã sản xuất của bạn sẽ không thành công

Thật không may, đây không phải là vấn đề mà

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp giải pháp cho. Bạn phải thực hiện phán đoán khi chế giễu các phụ thuộc bên ngoài

Cả ba vấn đề này có thể gây ra sự không phù hợp của thử nghiệm và các vấn đề có khả năng gây tốn kém vì chúng đe dọa đến tính toàn vẹn của mô phỏng của bạn.

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp cho bạn một số công cụ để giải quyết những vấn đề này

Tránh các vấn đề thường gặp khi sử dụng thông số kỹ thuật

Như đã đề cập trước đó, nếu bạn thay đổi định nghĩa lớp hoặc hàm hoặc bạn viết sai thuộc tính của đối tượng mô phỏng Python, bạn có thể gây ra sự cố với các bài kiểm tra của mình

Những sự cố này xảy ra vì

>>> mock.some_attribute

>>> mock.do_something[]

6 tạo các thuộc tính và phương thức khi bạn truy cập chúng. Câu trả lời cho những vấn đề này là ngăn
>>> mock.some_attribute

>>> mock.do_something[]

6 tạo các thuộc tính không phù hợp với đối tượng mà bạn đang cố gắng mô phỏng

Khi định cấu hình một

>>> mock.some_attribute

>>> mock.do_something[]

6, bạn có thể chuyển một đặc tả đối tượng cho tham số
>>> mock.some_attribute

>>> mock.do_something[]

658. Tham số
>>> mock.some_attribute

>>> mock.do_something[]

658 chấp nhận danh sách tên hoặc đối tượng khác và xác định giao diện của giả. Nếu bạn cố gắng truy cập một thuộc tính không thuộc thông số kỹ thuật,
>>> mock.some_attribute

>>> mock.do_something[]

6 sẽ tăng
>>> mock.some_attribute

>>> mock.do_something[]

652

>>>

>>> mock.some_attribute

>>> mock.do_something[]

1

Ở đây, bạn đã xác định rằng

>>> mock.some_attribute

>>> mock.do_something[]

662 có các phương thức được gọi là
>>> mock.some_attribute

>>> mock.do_something[]

663 và
>>> mock.some_attribute

>>> mock.do_something[]

664. Khi bạn truy cập vào
>>> mock.some_attribute

>>> mock.do_something[]

663, nó sẽ trả về một
>>> mock.some_attribute

>>> mock.do_something[]

6. Khi bạn truy cập vào
>>> mock.some_attribute

>>> mock.do_something[]

667, một phương thức không phù hợp với thông số kỹ thuật,
>>> mock.some_attribute

>>> mock.do_something[]

6 sẽ tạo ra một
>>> mock.some_attribute

>>> mock.do_something[]

652

Thông số kỹ thuật hoạt động theo cách tương tự nếu bạn định cấu hình

>>> mock.some_attribute

>>> mock.do_something[]

6 bằng một đối tượng

>>>

>>> mock.some_attribute

>>> mock.do_something[]

2

>>> mock.some_attribute

>>> mock.do_something[]

663 có sẵn cho
>>> mock.some_attribute

>>> mock.do_something[]

662 vì bạn đã định cấu hình
>>> mock.some_attribute

>>> mock.do_something[]

662 để phù hợp với giao diện của mô-đun
>>> mock.some_attribute

>>> mock.do_something[]

631

Hơn nữa,

>>> mock.some_attribute

>>> mock.do_something[]

5 cung cấp các phương thức thuận tiện để tự động chỉ định giao diện của phiên bản
>>> mock.some_attribute

>>> mock.do_something[]

6

Một cách để triển khai thông số kỹ thuật tự động là

>>> mock.some_attribute

>>> mock.do_something[]

677

>>>

>>> mock.some_attribute

>>> mock.do_something[]

3

Giống như trước đây,

>>> mock.some_attribute

>>> mock.do_something[]

662 là một phiên bản
>>> mock.some_attribute

>>> mock.do_something[]

6 có giao diện khớp với
>>> mock.some_attribute

>>> mock.do_something[]

631. Nếu bạn đang sử dụng
>>> mock.some_attribute

>>> mock.do_something[]

7, bạn có thể gửi đối số tới tham số
>>> mock.some_attribute

>>> mock.do_something[]

682 để đạt được kết quả tương tự

>>>

>>> mock.some_attribute

>>> mock.do_something[]

4

Loại bỏ các quảng cáo

Sự kết luận

Bạn đã học được rất nhiều về cách chế nhạo các đối tượng bằng cách sử dụng

>>> mock.some_attribute

>>> mock.do_something[]

5

Bây giờ, bạn có thể

  • Sử dụng
    >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    6 để bắt chước các đối tượng trong bài kiểm tra của bạn
  • Kiểm tra dữ liệu sử dụng để hiểu cách bạn sử dụng các đối tượng của mình
  • Tùy chỉnh các giá trị trả về và tác dụng phụ của các đối tượng giả của bạn
  • >>> mock.some_attribute
    
    >>> mock.do_something[]
    
    
    7 đối tượng xuyên suốt codebase của bạn
  • Xem và tránh các sự cố khi sử dụng đối tượng mô phỏng Python

Bạn đã xây dựng một nền tảng hiểu biết sẽ giúp bạn xây dựng các bài kiểm tra tốt hơn. Bạn có thể sử dụng mô phỏng để hiểu rõ hơn về mã của mình mà bạn không thể có được bằng cách khác

Tôi để lại cho bạn một tuyên bố từ chối trách nhiệm cuối cùng. Cẩn thận với việc lạm dụng các đối tượng giả

Thật dễ dàng để tận dụng sức mạnh của các đối tượng giả Python và giả nhiều đến mức bạn thực sự làm giảm giá trị của các bài kiểm tra của mình

Nếu bạn muốn tìm hiểu thêm về

>>> mock.some_attribute

>>> mock.do_something[]

5, tôi khuyên bạn nên đọc tài liệu tuyệt vời của nó

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Cải thiện các bài kiểm tra của bạn với Thư viện đối tượng mô phỏng Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Alex Ronquillo

Alex Ronquillo là Kỹ sư phần mềm tại thelab. Anh ấy là một Pythonista cuồng nhiệt, cũng đam mê viết lách và phát triển trò chơi

» Thông tin thêm về Alex

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

David

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Chủ Đề