私の他の質問をお知りになりましたら、私はPythonで単体テストを行うのが非常に難しいことを知っています。努力の2日と私は進歩をしていない。Python Unit Test Mocking
私のクラスの一部であるメソッドでは、DALへの呼び出しがいくつかあります。
car_registration = self.dal.cars.get_by_registration('121D121')
このDALは、基本クラスで構成されています。単体テストを実行しているときにこれらの呼び出しを完全にオーバーライド/モックして、あらかじめ定義された応答を返すようにして、メソッドを続行してすべてが期待通りに機能することを確認します。
での方法が開始:現時点で
def change_registration(self):
body = json.loads(self.request.body)
registration = body['registration']
car = self.dal.cars.get_by_registration(registration)
私のPythonのテストファイルは次のとおりです。
class CarTestCase(unittest.TestCase):
def setUp(self):
self.car_controller = CarController()
def test_change_registrations(self):
self.car_controller.dal.cars.get_by_registration = MagicMock(return_value=3)
response = self.car_controller.change_registration()
私は応答3.しかし、エラーがスローされますことを期待しています。
AttributeError: 'CarController' object has no attribute '_py_object'
モックが動作していないと、それはまだユニットテストを使用している場合、完全に設定されていない主なDALを使用しようとして表示されます。実際のDALを探すのを防ぐためにどうすればよいのですか?
を私はあなたが 'dal'属性を模擬する必要があると仮定します自体。 'self.car_controller.dal = Mock()'のようなものです。その後、 'self.car_controller.dal.cars.get_by_registration.return_value = 3'となります。 – chepner
私がその行を変更した場合は、「AttributeError:属性を設定できません」というエラーが表示されます。 – user7692855