Tôi đã xây dựng hệ thống lập hóa đơn CMS + chi phí cho khách hàng và tôi cần phải kiểm tra nghiêm ngặt hơn.Mô phỏng thời gian bỏ qua
Tôi giữ tất cả dữ liệu của mình trong ORM Django và có một loạt tác vụ Celery chạy theo các khoảng thời gian khác nhau.
Ví dụ tôi muốn trở thành một thể chạy một bài kiểm tra đó:
Tạo một người dùng mới và tạo ra một hóa đơn cho ngày X của quyền truy cập vào các trang web
Mô phỏng các thông qua X + 1 ngày và chạy tất cả các tác vụ tôi đã thiết lập trong Celery.
Kiểm tra xem hóa đơn mới cho một X ngày khác đã được phát hành cho người dùng hay chưa.
Cách tiếp cận KISS mà tôi đã thực hiện cho đến nay là thực hiện tất cả thử nghiệm trên máy riêng và thực sự thao tác ngày/giờ ở cấp hệ điều hành. Vì vậy, các kịch bản thử nghiệm sẽ:
Thiết lập ngày hệ thống cho đến ngày 1
Tạo một người dùng mới và tạo ra các hóa đơn đầu tiên cho ngày X tiếp cận
Trước đó ngày hệ thống 1 ngày . Chạy tất cả các nhiệm vụ cần tây của tôi. Lặp lại cho đến khi X + 1 ngày đã "qua"
Kiểm tra xem một hóa đơn mới đã được ban hành
Đó là một chút thời gian nhưng tôi nghĩ rằng nó có thể làm việc. Bất kỳ ý tưởng nào khác về cách hoàn thành nó?
Tôi gặp lỗi khi thực hiện việc này: TypeError: không thể đặt thuộc tính của kiểu mở rộng/mở rộng 'datetime.datetime'.Dấu vết: Traceback (cuộc gọi gần đây nhất): // Tệp "", dòng 1, trong // Tệp "/usr/lib/python2.7/dist-packages/mock.py", dòng 623, trong __enter__ // setattr (self.target, self.attribute, new_attr) –
Alfe
Xin lỗi, tôi quên điều đó. Gần đây tôi đã gặp vấn đề đó và tôi có một giải pháp. Chỉ cần cho tôi một vài phút và tôi sẽ cập nhật câu trả lời. – madjar
Hmm, cũng không nhận được phiên bản đang chạy, xin lỗi. Sau khi gọi 'setUp()', kết quả của 'datetime.datetime.now()' không bị ảnh hưởng bởi việc thiết lập 'self.time'. Có lẽ tôi đang nhận được nó sai vẫn còn. – Alfe