Tôi gặp sự cố khi sử dụng mã của câu trả lời được chấp nhận here.Tại sao khỉ con của python không hoạt động khi nhập một lớp thay vì một mô-đun?
Mã hoạt động tùy thuộc vào cách tôi thực hiện nhập ngày giờ. Tại sao vậy? Có thể thử nó để nó hoạt động cả hai cách?
Tôi đang sử dụng Python 3.4
. Các mã sau minh họa các vấn đề:
import pytest
from datetime import datetime
mockdate = datetime(2000, 1, 1, 0, 0, 0)
@pytest.fixture(autouse=True)
def patch_datetime_now(monkeypatch):
class mydatetime:
@classmethod
def now(cls):
return mockdate
monkeypatch.setattr('datetime.datetime', mydatetime)
def test_doesnt_work():
assert datetime.now() == mockdate
def test_works():
import datetime
assert datetime.datetime.now() == mockdate
Cảm ơn, đó là hữu ích. Vì vậy, bạn có biết cách nào để làm cho nó hoạt động với "từ datetime import datetime" thay vì "datetime import"? – rgargente
Thay vào đó, bạn nên vá 'yourmodule.datetime'. Hãy xem xét khuôn khổ giả: bạn có thể sử dụng 'patch' rất hữu ích. –
Tôi đã tạo ra một câu trả lời mới với giải pháp, nhưng tôi vẫn nghĩ rằng nó công bằng, tôi đánh dấu câu trả lời của bạn là được chấp nhận. Chúc mừng! – rgargente