Tôi đang viết một lớp phối hợp hai công cụ (bộ điều khiển nguồn điều khiển từ xa và bộ điều khiển bus được sử dụng để điều khiển Thiết bị-Thử nghiệm) để thực hiện tất cả các loại phép đo trên Thiết bị Kiểm tra (DUT)).Thử nghiệm Đơn vị Python với hai đối tượng giả, cách xác minh lệnh gọi?
Truy cập vào cả hai công cụ được triển khai dưới dạng lớp Python và tham chiếu đến từng công cụ có sẵn cho lớp mới. Các DUT là hơi tinh tế và có một chuỗi sức mạnh rất cụ thể liên quan đến các cuộc gọi đến cung cấp điện và điều khiển xe buýt và phải xảy ra theo thứ tự cụ thể để tránh làm hỏng DUT.
Bây giờ tôi muốn viết một bài kiểm tra đơn vị cho lớp này. Tôi hiện đang sử dụng nosetests và mock-package cho việc này. Vì vậy, ý tưởng của tôi là giả lập cả hai lớp học cụ và xác minh thứ tự cuộc gọi chính xác cho những người đó.
Có vẻ như rất dễ dàng để xác minh thứ tự cuộc gọi cho từng lớp được mô phỏng. Do đó, tôi có thể tìm hiểu xem nguồn cung cấp điện đã được yêu cầu áp dụng chính xác điện áp pin đầu tiên chưa, sau đó điện áp miền kỹ thuật số và sau đó điện áp miền tương tự. Tôi cũng có thể thấy rằng các thanh ghi kỹ thuật số đã được lập trình cho các giá trị chính xác. Tuy nhiên, tôi đang mắc kẹt xác định nếu các cuộc gọi để viết các thanh ghi kỹ thuật số đã xảy ra giữa việc áp dụng điện áp miền kỹ thuật số và điện áp miền tương tự.
Vì vậy, câu hỏi của tôi là: Nếu tôi có hai đối tượng giả mạo, làm cách nào để xác minh thứ tự cuộc gọi cụ thể giữa các đối tượng đó? Mặc dù vậy, đầu tiên của tôi là kiểm tra dấu thời gian của các cuộc gọi nhưng dường như không tồn tại.
Bạn có thể kiểm tra những điều sau đây đúng theo thứ tự: không phải A hay B được gọi; A được gọi nhưng B không phải; A và B được gọi? – jonrsharpe
tôi nghĩ rằng bạn có thể sử dụng side_effect trên Mock để khởi động một chức năng khác sẽ báo cáo bất kỳ điều gì bạn muốn báo cáo - tức là lưu trữ thứ gì đó trong danh sách chung hoặc ở đâu đó thuận tiện – user3012759
@ user3012759 Điều tương tự tôi đang nghĩ; bạn thậm chí có thể, ví dụ, sử dụng hiệu ứng phụ của A để khẳng định rằng B chưa được gọi. – chepner