Saya mencoba menambal variabel dalam modul settings
selama metode pengujian dijalankan:
from unittest import mock
class Test(...):
@mock.patch('settings.TARGET_SCORES_PER_SECTION', True)
def test_register_user(self):
Saya mendapatkan kesalahan ini:
ERROR: tests.test_user.transplant_class.<locals>.C (test_register_user)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/mock.py", line 1179, in patched
return func(*args, **keywargs)
TypeError: test_register_user() missing 1 required positional argument: 'self'
Saya mencoba pendekatan yang berbeda, tidak dapat menemukan solusi.
Apa yang saya lakukan salah?
Versi ini berfungsi dengan baik:
def test_register_user(self):
with mock.patch('settings.TARGET_SCORES_PER_SECTION', True):
self._test_register_user()
def _test_register_user(self):
Dan saya berharap penggunaannya sebagai dekorator akan bekerja dengan cara yang sama.
settings
dan menambahkan tiruan yang dipatch ke parameter fungsi pengujian Anda seperti didef test_register_user(self, mock_target_scores):
- person progmatico   schedule 19.04.2019as
dalam pernyataanwith
, yang berarti Anda tidak ingin mengakses tiruan selain membuat tambalan dengannya. Ini juga bagus untuk kasus tiruan sederhana atau jika Anda menyiapkan objek lain untuk diteruskan ke patch dengannew
- person progmatico   schedule 19.04.2019self
ke dalam metode kelas sejenak? - person progmatico   schedule 19.04.2019