Tôi đang cố gắng thử nghiệm nội dung nào đó trong khi thử nghiệm một ứng dụng Django bằng cách sử dụng hình ảnh có tên là Mock testing library. Tôi dường như không thể làm cho nó hoạt động được, tôi đang cố gắng làm điều này:Sử dụng bản vá giả để mô phỏng phương pháp thể hiện
models.py
from somelib import FooClass
class Promotion(models.Model):
foo = models.ForeignKey(FooClass)
def bar(self):
print "Do something I don't want!"
test.py
class ViewsDoSomething(TestCase):
view = 'my_app.views.do_something'
def test_enter_promotion(self):
@patch.object(my_app.models.FooClass, 'bar')
def fake_bar(self, mock_my_method):
print "Do something I want!"
return True
self.client.get(reverse(view))
Tôi đang làm gì sai?
'' 'bar''' thực chất là một "phương pháp dụ," và tham số duy nhất của nó là' '' self' ''. Để trở thành một phương thức lớp, nó sẽ cần phải được tham số hóa với '' 'cls''', và sẽ được gọi là' '' Promotion.foo() '' '. – cavaunpeu
Đối tượng có thể vá cần phải được trích dẫn như sau: '@ patch.object ('my_app.models.FooClass', 'bar')' – Lasma
@cavaunpeu - không (chỉ) được tham số hóa với 'cls', nhưng quan trọng hơn (vì 'self' và' cls' không có ý nghĩa gì đặc biệt trong python), được trang trí với '@ classmethod' – dwanderson