Hướng dẫn python assert keyerror - lỗi khóa xác nhận python
Đoạn mã sau: Show
Nội dung chính ShowShow
ném KeyError:
Có ai đó biết tại sao? Đã hỏi ngày 8 tháng 3 năm 2012 lúc 18:51Mar 8, 2012 at 18:51Mar 8, 2012 at 18:51 3 Bạn có một số niềng răng không được phân loại trong mã đó. Python coi tất cả các niềng răng là người giữ chỗ và đang cố gắng thay thế tất cả. Tuy nhiên, bạn chỉ cung cấp một giá trị. Tôi hy vọng rằng bạn không muốn tất cả các niềng răng của bạn là người giữ chỗ, vì vậy bạn nên nhân đôi những người mà bạn không muốn thay thế. Như là:
Tôi cũng đã tự do sử dụng ba trích dẫn cho chuỗi theo nghĩa đen để bạn không cần dấu gạch chéo ngược ở cuối mỗi dòng. Đã trả lời ngày 8 tháng 3 năm 2012 lúc 18:57Mar 8, 2012 at 18:57Mar 8, 2012 at 18:57 Kindallkindallkindallkindall 173K34 Huy hiệu vàng268 Huy hiệu bạc300 Huy hiệu đồng34 gold badges268 silver badges300 bronze badges34 gold badges268 silver badges300 bronze badges 1 Mới trong phiên bản 3.3. Mã nguồn: lib/unittest/mock.py Lib/unittest/mock.py Lib/unittest/mock.py 33 là một thư viện để thử nghiệm trong Python. Nó cho phép bạn thay thế các phần của hệ thống của bạn được thử nghiệm bằng các đối tượng giả và đưa ra các xác nhận về cách chúng đã được sử dụng. 33 cung cấp lớp lõi 35 Loại bỏ sự cần thiết phải tạo một loạt các cuống trong suốt bộ thử nghiệm của bạn. Sau khi thực hiện một hành động, bạn có thể đưa ra các xác nhận về phương thức / thuộc tính nào đã được sử dụng và các đối số mà chúng được gọi. Bạn cũng có thể chỉ định các giá trị trả về và đặt các thuộc tính cần thiết theo cách thông thường.Ngoài ra, Mock cung cấp một trình trang trí 36 xử lý mô -đun vá và các thuộc tính cấp lớp trong phạm vi của một bài kiểm tra, cùng với 37 để tạo các đối tượng độc đáo. Xem hướng dẫn nhanh để biết một số ví dụ về cách sử dụng 35, 39 và 36.Mock được thiết kế để sử dụng với 41 và dựa trên mẫu ‘hành động -> khẳng định thay vì‘ bản ghi -> phát lại được sử dụng bởi nhiều khung bắt buộc.Có một backport là 33 cho các phiên bản Python trước đó, có sẵn dưới dạng giả trên PYPI.Hướng dẫn nhanh¶Các đối tượng 35 và 39 Tạo tất cả các thuộc tính và phương thức khi bạn truy cập chúng và lưu trữ chi tiết về cách chúng đã được sử dụng. Bạn có thể định cấu hình chúng, để chỉ định các giá trị trả về hoặc giới hạn các thuộc tính có sẵn và sau đó đưa ra các xác nhận về cách chúng đã được sử dụng: 5 45 cho phép bạn thực hiện các tác dụng phụ, bao gồm cả việc tăng ngoại lệ khi một giả được gọi: 7 8Mock có nhiều cách khác mà bạn có thể định cấu hình và kiểm soát hành vi của nó. Ví dụ, đối số Spec cấu hình giả để lấy thông số kỹ thuật của nó từ một đối tượng khác. Cố gắng truy cập các thuộc tính hoặc phương thức trên chế độ giả mà don lồng tồn tại trên thông số kỹ thuật sẽ thất bại với 46.Bộ trang trí / Trình quản lý bối cảnh 36 giúp dễ dàng chế giễu các lớp hoặc đối tượng trong một mô -đun được thử nghiệm. Đối tượng bạn chỉ định sẽ được thay thế bằng một giả (hoặc đối tượng khác) trong quá trình kiểm tra và khôi phục khi thử nghiệm kết thúc: 1Ghi chú Khi bạn làm tổ trang trí, các chế độ giả được chuyển vào chức năng được trang trí theo cùng thứ tự chúng được áp dụng (thứ tự python bình thường mà các nhà trang trí được áp dụng). Điều này có nghĩa là từ dưới lên, vì vậy trong ví dụ trên giả cho 48 được thông qua đầu tiên.Với 36, vấn đề là bạn vá các đối tượng trong không gian tên nơi chúng được nhìn lên. Điều này thường đơn giản, nhưng đối với một hướng dẫn nhanh, hãy đọc nơi để vá.where to patch.where to
patch.Cũng như một người trang trí 36 có thể được sử dụng làm trình quản lý bối cảnh trong một câu lệnh: 5Ngoài ra còn có 51 để thiết lập các giá trị trong một từ điển chỉ trong một phạm vi và khôi phục từ điển về trạng thái ban đầu của nó khi thử nghiệm kết thúc: 7Mock hỗ trợ việc chế giễu các phương pháp ma thuật Python. Cách dễ nhất để sử dụng các phương thức ma thuật là với lớp 39. Nó cho phép bạn làm những việc như:magic methods. The easiest way of using magic methods is with the 39 class. It allows you to do things like: 0magic
methods. The easiest way of using magic methods is with the 39 class. It allows you to do things like: 0Mock cho phép bạn gán các chức năng (hoặc các phiên bản giả khác) cho các phương thức ma thuật và chúng sẽ được gọi là thích hợp. Lớp 39 chỉ là một biến thể giả có tất cả các phương pháp ma thuật được tạo sẵn cho bạn (dù sao, tất cả đều hữu ích).Sau đây là một ví dụ về việc sử dụng các phương thức ma thuật với lớp giả thông thường: 0Để đảm bảo rằng các đối tượng giả trong các thử nghiệm của bạn có cùng API với các đối tượng chúng đang thay thế, bạn có thể sử dụng tự động. Tự động sử dụng có thể được thực hiện thông qua đối số Autospec thành bản vá hoặc hàm 54. Tự động tạo ra các đối tượng giả có cùng thuộc tính và phương thức như các đối tượng chúng đang thay thế, và bất kỳ hàm và phương thức nào (bao gồm cả các hàm tạo) đều có chữ ký cuộc gọi giống như đối tượng thực.auto-speccing. Auto-speccing can be done through the autospec argument to patch, or the 54 function. Auto-speccing creates mock objects that have the same attributes and methods as the objects they are replacing, and any functions and methods (including constructors) have the same call signature as the real object.auto-speccing. Auto-speccing can be done
through the autospec argument to patch, or the 54 function. Auto-speccing creates mock objects that have the same attributes and methods as the objects they are replacing, and any functions and methods (including constructors) have the same call signature as the real object.Điều này đảm bảo rằng giả của bạn sẽ thất bại theo cách tương tự như mã sản xuất của bạn nếu chúng được sử dụng không chính xác: 1 54 cũng có thể được sử dụng trên các lớp, trong đó nó sao chép chữ ký của phương thức 56 và trên các đối tượng có thể gọi được trong đó nó sao chép chữ ký của phương thức 57.Lớp giả 35 là một đối tượng giả linh hoạt nhằm thay thế việc sử dụng các cuống và kiểm tra đôi trong suốt mã của bạn. Mocks có thể gọi được và tạo các thuộc tính dưới dạng giả mới khi bạn truy cập chúng 1. Truy cập cùng một thuộc tính sẽ luôn trả về cùng một giả. Mocks ghi lại cách bạn sử dụng chúng, cho phép bạn đưa ra các xác nhận về những gì mã của bạn đã làm với chúng. 39 là một lớp con của 35 với tất cả các phương pháp ma thuật được tạo sẵn và sẵn sàng để sử dụng. Ngoài ra còn có các biến thể không thể gọi được, hữu ích khi bạn đang chế giễu các đối tượng có thể gọi được: 61 và 62Các nhà trang trí 36 giúp dễ dàng thay thế các lớp trong một mô -đun cụ thể bằng một đối tượng 35. Theo mặc định 36 sẽ tạo 39 cho bạn. Bạn có thể chỉ định một lớp thay thế 35 bằng cách sử dụng đối số new_callable thành 36. classunittest.mock.mock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = noneunittest.mock.Mock(spec=None, side_effect=None, return_value=DEFAULT, wraps=None, name=None, spec_set=None, unsafe=False, **kwargs)¶classunittest.mock.mock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = noneunittest.mock.Mock(spec=None, side_effect=None,
return_value=DEFAULT, wraps=None, name=None, spec_set=None, unsafe=False,
**kwargs)¶Tạo một đối tượng 35 mới. 35 có một số đối số tùy chọn xác định hành vi của đối tượng giả:
Mocks cũng có thể được gọi với các đối số từ khóa tùy ý. Chúng sẽ được sử dụng để đặt các thuộc tính trên giả sau khi nó được tạo. Xem phương thức 83 để biết chi tiết. assert_called () ¶()¶assert_called ()
¶()¶Khẳng định rằng giả được gọi ít nhất một lần. 2Mới trong phiên bản 3.6. assert_called_once () ¶()¶()¶Khẳng định rằng giả được gọi là chính xác một lần. 3Mới trong phiên bản 3.6. assert_called_once () ¶()¶(*args, **kwargs)¶Khẳng định rằng giả được gọi là chính xác một lần. assert_called_once () ¶(*args, **kwargs)¶assert_called_with (*args, ** kwargs) ¶(*args, **kwargs)¶ 4 assert_called_with (*args, ** kwargs) ¶(*args, **kwargs)¶Phương pháp này là một cách thuận tiện để khẳng định rằng cuộc gọi cuối cùng đã được thực hiện theo một cách cụ thể:assert_called_once_with (*args, ** kwargs) ¶(*args, **kwargs)¶ 5 assert_called_once_with (*args, ** kwargs) ¶(*args, **kwargs)¶Khẳng định rằng giả được gọi là chính xác một lần và cuộc gọi đó là với các đối số được chỉ định. assert_any_call (*args, ** kwargs) ¶khẳng định giả đã được gọi với các đối số được chỉ định.(calls, any_order=False)¶ 6 khẳng định giả đã được gọi với các đối số được chỉ định.(calls, any_order=False)¶Assert vượt qua nếu giả đã được gọi, không giống như 84 và 85 chỉ vượt qua nếu cuộc gọi là cuộc gọi gần đây nhất, và trong trường hợp 85 cũng phải là cuộc gọi duy nhất.assert_has_calls (cuộc gọi, any_order = false) ¶ khẳng định giả đã được gọi với các cuộc gọi được chỉ định. Danh sách Nếu Any_order là sai thì các cuộc gọi phải được tuần tự. Có thể có thêm các cuộc gọi trước hoặc sau các cuộc gọi được chỉ định.()¶
87 được kiểm tra các cuộc gọi. 7 Nếu Any_order là sai thì các cuộc gọi phải được tuần tự. Có thể có thêm các cuộc gọi trước hoặc sau các cuộc gọi được chỉ định.()¶ 87. 8Nếu Any_order là đúng thì các cuộc gọi có thể theo bất kỳ thứ tự nào, nhưng tất cả chúng phải xuất hiện trong assert_not_called () ¶(*, return_value=False, side_effect=False)¶Khẳng định giả không bao giờ được gọi.(*, return_value=False, side_effect=False)¶ 9Mới trong phiên bản 3.5.Added two keyword only argument to the reset_mock function. reset_mock (*, return_value = false, side_effect = false) ¶Added two keyword only argument to the reset_mock function. Phương thức reset_mock đặt lại tất cả các thuộc tính cuộc gọi trên một đối tượng giả: Đã thay đổi trong phiên bản 3.6: Đã thêm hai đối số từ khóa vào chức năng reset_mock. Điều này có thể hữu ích khi bạn muốn thực hiện một loạt các xác nhận sử dụng lại cùng một đối tượng. Lưu ý rằng Ghi chú(spec, spec_set=False)¶ 89 không rõ giá trị trả về, 45 hoặc bất kỳ thuộc tính con nào bạn đã đặt bằng cách sử dụng gán thông thường theo mặc định. Trong trường hợp bạn muốn đặt lại return_value hoặc 45, thì hãy truyền tham số tương ứng là 92. Trẻ em chế giễu và giá trị trả lại giả (nếu có) cũng được đặt lại. Ghi chú(spec, spec_set=False)¶return_value và 45 chỉ là đối số từ khóa. Mock_add_spec (spec, spec_set = false) ¶(mock, attribute)¶Thêm một thông số kỹ thuật vào một giả. Thông số kỹ thuật có thể là một đối tượng hoặc một danh sách các chuỗi. Chỉ các thuộc tính trên thông số kỹ thuật mới có thể được tìm nạp dưới dạng các thuộc tính từ giả.(mock, attribute)¶ Nếu spec_set là đúng thì chỉ có thể đặt các thuộc tính trên thông số kỹ thuật.(**kwargs)¶bomptep_mock (giả, thuộc tính) ¶(**kwargs)¶ Đính kèm một giả làm một thuộc tính của cái này, thay thế tên và cha mẹ của nó. Các cuộc gọi đến Mock đính kèm sẽ được ghi lại trong các thuộc tính 94 và 87 của cái này. 0Cấu hình_mock (** kwargs) ¶ 1Đặt các thuộc tính trên giả thông qua các đối số từ khóa. Các thuộc tính cộng với các giá trị trả về và các tác dụng phụ có thể được đặt trên các chế giễu trẻ em bằng cách sử dụng ký hiệu dấu chấm tiêu chuẩn và giải nén từ điển trong cuộc gọi phương thức:()¶ 83 tồn tại để làm cho cấu hình dễ dàng hơn sau khi giả được tạo.Điều tương tự có thể đạt được trong cuộc gọi xây dựng đến Mocks:()¶ 83 tồn tại để làm cho cấu hình dễ dàng hơn sau khi giả được tạo. __dir __ ()(**kw)¶ 35 Các đối tượng giới hạn kết quả của 98 là kết quả hữu ích. Đối với các chế giễu với một thông số kỹ thuật này bao gồm tất cả các thuộc tính được phép cho giả.(**kw)¶Xem 99 để biết những gì bộ lọc này làm và cách tắt nó. _get_child_mock (** kw) ¶¶Đối với giả không thể gọi, biến thể có thể gọi sẽ được sử dụng (thay vì bất kỳ lớp con tùy chỉnh nào). 2 gọi lබgọi lබMột boolean đại diện cho việc đối tượng giả có được gọi là: 3 Call_Count¶¶Call_Count¶¶Một số nguyên cho bạn biết bao nhiêu lần đối tượng giả đã được gọi: 4return_value¶ 5Đặt cái này để định cấu hình giá trị được trả về bằng cách gọi Mock: 6 Giá trị trả về mặc định là một đối tượng giả và bạn có thể định cấu hình nó theo cách thông thường:¶ 78 cũng có thể được đặt trong hàm tạo:Giá trị trả về mặc định là một đối tượng giả và bạn có thể định cấu hình nó theo cách thông thường:¶ 78 cũng có thể được đặt trong hàm tạo:tác dụng phụ¶ Đây có thể là một chức năng được gọi khi giả được gọi, một điều khác biệt hoặc một ngoại lệ (lớp hoặc thể hiện) sẽ được nêu ra. Một ví dụ về một chế độ giả tạo ra một ngoại lệ (để kiểm tra ngoại lệ xử lý API): 7Sử dụng 45 để trả về một chuỗi các giá trị: 8Sử dụng một cuộc gọi có thể gọi được: 9 45 có thể được đặt trong hàm tạo. Ở đây, một ví dụ thêm một vào giá trị mà giả được gọi và trả về nó: 50Cài đặt 45 thành 77 Xóa nó: 51 Call_args¶¶Call_args¶¶Đây là 77 (nếu giả đã được gọi), hoặc các lập luận mà giả được gọi lần cuối. Điều này sẽ ở dạng một tuple: thành viên đầu tiên, cũng có thể được truy cập thông qua thuộc tính 10, bất kỳ đối số được đặt hàng nào mà Mock được gọi với (hoặc một Tuple trống) và thành viên thứ hai, cũng có thể được truy cập thông qua Thuộc tính 11, là bất kỳ đối số từ khóa nào (hoặc từ điển trống). 52 12, cùng với các thành viên của danh sách 13, 94 và 87 là các đối tượng 16. Đây là những bộ dữ liệu, vì vậy chúng có thể được giải nén để có được các đối số riêng lẻ và đưa ra những khẳng định phức tạp hơn. Xem các cuộc gọi là Tuples.calls as tuples.calls as tuples.Đã thay đổi trong phiên bản 3.8: Đã thêm các thuộc tính 10 và 11.Added 10 and 11 properties. call_args_list¶¶call_args_list¶¶Đây là danh sách tất cả các cuộc gọi được thực hiện cho đối tượng giả theo trình tự (vì vậy độ dài của danh sách là số lần nó được gọi). Trước khi bất kỳ cuộc gọi nào được thực hiện, nó là một danh sách trống. Đối tượng 16 có thể được sử dụng để xây dựng một cách thuận tiện các danh sách các cuộc gọi để so sánh với 13. 53Các thành viên của 13 là đối tượng 16. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples. Phương pháp_Calls¶¶calls as tuples. Phương pháp_Calls¶¶Cũng như theo dõi các cuộc gọi đến chính họ, các chế giễu cũng theo dõi các cuộc gọi đến các phương thức và thuộc tính, và các phương thức và thuộc tính của chúng: 54Các thành viên của 13 là đối tượng 16. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples. Phương pháp_Calls¶¶calls as tuples. Mock_calls¶¶ 87 ghi lại tất cả các cuộc gọi đến đối tượng giả, các phương thức, phương thức ma thuật và chế giễu giá trị trả về. 5
5Các thành viên của 13 là đối tượng 16. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples. Phương pháp_Calls¶¶calls as tuples.Cũng như theo dõi các cuộc gọi đến chính họ, các chế giễu cũng theo dõi các cuộc gọi đến các phương thức và thuộc tính, và các phương thức và thuộc tính của chúng: 94 là đối tượng 16. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples. Mock_calls¶¶ 87 ghi lại tất cả các cuộc gọi đến đối tượng giả, các phương thức, phương thức ma thuật và chế giễu giá trị trả về. 5 5 87 là đối tượng 16. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples.__lớp__¶¶Ghi chú Cách classunittest.mock.noncallablemock (spec = none, wraps = none, name = none, spec_set = none, ** kwargs) ¶unittest.mock.NonCallableMock(spec=None, wraps=None, name=None, spec_set=None, **kwargs)¶ 87 được ghi lại có nghĩa là khi các cuộc gọi lồng nhau được thực hiện, các tham số của các cuộc gọi tổ tiên không được ghi lại và do đó sẽ luôn so sánh bằng nhau: 56 __lớp__¶¶Thông thường thuộc tính 72 của một đối tượng sẽ trả về loại của nó. Đối với một đối tượng giả với 30, 72 trả về lớp spec. Điều này cho phép các đối tượng giả vượt qua các bài kiểm tra 73 cho đối tượng họ đang thay thế / giả mạo như: 57 72 có thể được gán cho, điều này cho phép một chế độ giả vượt qua kiểm tra 73 mà không buộc bạn sử dụng thông số kỹ thuật: 58 classunittest.mock.noncallablemock (spec = none, wraps = none, name = none, spec_set = none, ** kwargs) ¶unittest.mock.NonCallableMock(spec=None, wraps=None, name=None, spec_set=None, **kwargs)¶Một phiên bản không thể gọi của 35. Các tham số của hàm tạo có cùng ý nghĩa của 35, ngoại trừ return_value và side_effect không có ý nghĩa trên một giả không thể gọi được.Các đối tượng giả sử dụng một lớp hoặc một thể hiện dưới dạng magic methods for the full details. 30 hoặc 38 có thể vượt qua các bài kiểm tra 73: 59Các lớp Giá trị trả về và tác dụng phụ của giả trẻ em có thể được đặt theo cùng một cách, sử dụng ký hiệu chấm. Vì bạn có thể sử dụng các tên chấm trực tiếp trong một cuộc gọi, bạn phải tạo một từ điển và giải nén nó bằng cách sử dụng 43: 1Một chế độ giả có thể gọi được được tạo ra với một thông số kỹ thuật (hoặc một spec_set) sẽ hướng nội vào chữ ký của đối tượng đặc tả khi khớp các cuộc gọi với giả. Do đó, nó có thể khớp với các đối số cuộc gọi thực tế bất kể chúng được thông qua vị trí hay theo tên: 72Điều này áp dụng cho 84, 85, 46 và 47. Khi tự động hóa, nó cũng sẽ áp dụng cho các cuộc gọi phương thức trên đối tượng giả.Autospeccing, it will also apply to method calls on the mock object.Autospeccing, it will also apply to method calls on the mock object.classunittest.mock.propertymock (*args, ** kwargs) ¶unittest.mock.PropertyMock(*args, **kwargs)¶unittest.mock.PropertyMock(*args, **kwargs)¶ Một giả dự định được sử dụng làm tài sản hoặc mô tả khác trên một lớp. 48 cung cấp các phương thức 49 và 50 để bạn có thể chỉ định giá trị trả về khi nó được tìm nạp.Tìm nạp một thể hiện 48 từ một đối tượng gọi là giả, không có args. Đặt nó gọi là giả với giá trị được đặt. 73Do cách lưu trữ các thuộc tính giả, bạn có thể gắn trực tiếp một 48 vào một đối tượng giả. Thay vào đó, bạn có thể gắn nó vào đối tượng loại giả: 74 classunittest.mock.asyncmock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = none, không an toàn = falseunittest.mock.AsyncMock(spec=None, side_effect=None, return_value=DEFAULT, wraps=None, name=None, spec_set=None, unsafe=False, **kwargs)¶classunittest.mock.asyncmock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = none, không an toàn = false
unittest.mock.AsyncMock(spec=None, side_effect=None, return_value=DEFAULT, wraps=None,
name=None, spec_set=None, unsafe=False, **kwargs)¶Một phiên bản không đồng bộ của 39. Đối tượng 54 sẽ hoạt động để đối tượng được công nhận là hàm async và kết quả của một cuộc gọi là một cuộc gọi có thể chờ đợi. 75Kết quả của 55 là một hàm Async sẽ có kết quả của 45 hoặc 78 sau khi nó đã được chờ đợi:
45 là một ngoại lệ, hàm async sẽ tăng ngoại lệ,Tuy nhiên, nếu 45 là một điều không thể điều chỉnh được, thì hàm async sẽ trả về giá trị tiếp theo của điều đó, tuy nhiên, nếu chuỗi kết quả bị cạn kiệt, 61 sẽ được nâng lên ngay lập tức, 45 không được xác định, hàm async sẽ trả về giá trị được xác định bởi 78, do đó, theo mặc định, hàm async trả về một đối tượng 54 mới.Đặt thông số kỹ thuật của 35 hoặc 39 thành hàm async sẽ dẫn đến một đối tượng coroutine được trả về sau khi gọi. 76()¶Đặt thông số của 35, 39 hoặc 54 cho một lớp có hàm đồng bộ và đồng bộ sẽ tự động phát hiện các hàm đồng bộ và đặt chúng là 39 . Tất cả các chức năng không đồng bộ sẽ là 54. 77assert_awaited_once () ¶()¶Mới trong phiên bản 3.8. assert_awaited ()()¶assert_awaited_with (*args, ** kwargs) ¶(*args, **kwargs)¶Khẳng định rằng giả đã được chờ đợi ít nhất một lần. Lưu ý rằng điều này tách biệt với đối tượng đã được gọi, từ khóa 76 phải được sử dụng: 78 assert_awaited_once () ¶()¶assert_awaited_once_with (*args, ** kwargs) ¶(*args,
**kwargs)¶Khẳng định rằng giả đã được chờ đợi chính xác một lần. 79 assert_awaited_with (*args, ** kwargs) ¶(*args, **kwargs)¶assert_any_await (*args, ** kwargs) ¶(*args, **kwargs)¶ Khẳng định rằng cuối cùng đang chờ đợi là với các đối số được chỉ định. 80 assert_awaited_once_with (*args, ** kwargs) ¶(*args, **kwargs)¶assert_has_awaits
(cuộc gọi, any_order = false) ¶(calls, any_order=False)¶Khẳng định rằng giả đã được chờ đợi chính xác một lần và với các đối số được chỉ định. 81 assert_any_await (*args, ** kwargs) ¶(*args, **kwargs)¶ Khẳng định giả đã từng được chờ đợi với các đối số được chỉ định. 82 assert_has_awaits (cuộc gọi, any_order = false) ¶(calls, any_order=False)¶Khẳng định giả đã được chờ đợi với các cuộc gọi được chỉ định. Danh sách assert_not_awaited () ¶()¶ 77 được kiểm tra các bản chờ.Nếu Any_order là sai thì các chờ đợi phải được tuần tự. Có thể có thêm các cuộc gọi trước hoặc sau khi được chỉ định đang chờ.reset_mock (*args, ** kwargs) ¶(*args, **kwargs)¶Nếu Any_order là đúng thì các chờ đợi có thể theo bất kỳ thứ tự nào, nhưng tất cả chúng phải xuất hiện trong 77. 83 assert_not_awaited () ¶()¶Await_Count¶¶Khẳng định rằng giả không bao giờ được chờ đợi. 84 reset_mock (*args, ** kwargs) ¶(*args, **kwargs)¶Await_args¶¶Xem 79. Cũng đặt 80 thành 0, 81 thành không có và xóa 77. Await_Count¶¶Await_args_list¶¶Đây là danh sách tất cả các phần đang chờ được thực hiện cho đối tượng giả theo trình tự (vì vậy độ dài của danh sách là số lần nó đã được chờ đợi). Trước khi bất kỳ sự chờ đợi đã được thực hiện, nó là một danh sách trống. 87Gọi tắtĐối tượng giả có thể gọi được. Cuộc gọi sẽ trả về giá trị được đặt làm thuộc tính 78. Giá trị trả về mặc định là một đối tượng giả mới; Nó được tạo ra lần đầu tiên giá trị trả về được truy cập (rõ ràng hoặc bằng cách gọi giả) - nhưng nó được lưu trữ và cùng một lần trả về mỗi lần.Các cuộc gọi được thực hiện cho đối tượng sẽ được ghi lại trong các thuộc tính như 12 và 13.Nếu 45 được đặt thì nó sẽ được gọi sau khi cuộc gọi đã được ghi lại, vì vậy nếu 45 sẽ đặt ra một ngoại lệ, cuộc gọi vẫn được ghi lại.Cách đơn giản nhất để làm cho một chế độ giả tạo ra một ngoại lệ khi được gọi là biến 45 thành một lớp hoặc thể hiện ngoại lệ: 88Nếu 45 được đặt thì nó sẽ được gọi sau khi cuộc gọi đã được ghi lại, vì vậy nếu 45 sẽ đặt ra một ngoại lệ, cuộc gọi vẫn được ghi lại.Cách đơn giản nhất để làm cho một chế độ giả tạo ra một ngoại lệ khi được gọi là biến 45 thành một lớp hoặc thể hiện ngoại lệ: 88 45 là một chức năng thì bất cứ điều gì mà hàm đó trả về là những gì gọi cho sự trở lại giả. Hàm 45 được gọi với các đối số tương tự như giả. Điều này cho phép bạn thay đổi giá trị trả về của cuộc gọi một cách linh hoạt, dựa trên đầu vào: 89Nếu bạn muốn Mock vẫn trả về giá trị trả về mặc định (một giả mới) hoặc bất kỳ giá trị trả về được đặt nào, thì có hai cách để làm điều này. Trả lại 93 từ bên trong 45 hoặc trả về 76: 10 13Để xóa 45 và quay lại hành vi mặc định, hãy đặt 45 thành 77: 11 45 cũng có thể là bất kỳ đối tượng có thể lặp lại. Các cuộc gọi lặp đi lặp lại cho Mock sẽ trả về các giá trị từ Itable (cho đến khi có thể cạn kiệt và 500 được nâng lên): 12Nếu bất kỳ thành viên nào trong số đó là ngoại lệ, họ sẽ được nuôi dưỡng thay vì trả lại: Xóa các thuộc tínhĐối tượng giả tạo các thuộc tính theo yêu cầu. Điều này cho phép họ giả vờ là đối tượng của bất kỳ loại nào. 46. 14Bạn có thể muốn một đối tượng giả phải trả lại 501 cho cuộc gọi 502 hoặc tăng 46 khi một thuộc tính được tìm nạp. Bạn có thể làm điều này bằng cách cung cấp một đối tượng dưới dạng 30 cho một chế độ giả, nhưng đó không phải là luôn luôn thuận tiện.Bạn có thể chặn các thuộc tính bằng cách xóa chúng. Sau khi bị xóa, việc truy cập một thuộc tính sẽ tăng Tên giả và thuộc tính tên 16Vì tên gọi tên là một đối số cho hàm tạo 35, nếu bạn muốn đối tượng giả của bạn có thuộc tính tên của tên, bạn có thể chỉ cần vượt qua nó vào thời điểm sáng tạo. Có hai lựa chọn thay thế. Một tùy chọn là sử dụng 83: 15Một tùy chọn đơn giản hơn là chỉ cần đặt thuộc tính tên của tên gọi sau khi tạo ra giả:Đính kèm giả là thuộc tính 18Khi bạn gắn một giả làm một thuộc tính của một chế độ giả khác (hoặc là giá trị trả về), nó trở thành một đứa trẻ của người Hồi giáo của giả đó. Các cuộc gọi cho trẻ được ghi lại trong các thuộc tính 94 và 87 của cha mẹ. Điều này rất hữu ích cho việc định cấu hình các chế giễu trẻ em và sau đó gắn chúng vào cha mẹ hoặc để đính kèm giả với cha mẹ ghi lại tất cả các cuộc gọi cho con cái và cho phép bạn đưa ra các xác nhận về thứ tự các cuộc gọi giữa các giả: 171Ngoại lệ cho điều này là nếu giả có một tên. Điều này cho phép bạn ngăn chặn việc nuôi dạy con cái của người Viking nếu vì một lý do nào đó mà bạn không muốn điều đó xảy ra. Mocks được tạo cho bạn bởi magic methods.Traceback (most recent call last): File "createController.py", line 31, in |