可以模拟但由于int类型对象不可调用而获得异常

时间:2019-01-24 08:53:18

标签: python-3.x pytest

  @patch("dao.qualcomm_transaction_service.QualcommTransactionService.get_max_qualcomm_id",20) 
def test_lambda_handler(): 
lambda_handler(event, None)

我用模拟方法看了你的例子,我的方法希望在本地进行的lambda函数测试中返回20,但是在达到上述方法时,我会得到一个异常int类型对象不可调用。请让我知道这里出了什么问题。

这是我正在尝试模拟的实际方法,它使用lambda函数(在本地测试lambda)进行调用:

last_max_id = QualcommTransactionService().get_max_qualcomm_id(self.subscriber_id)

我的文件夹结构如下:

functions
  -subscription_lambda
     -qt_lambda_event.py
layers
  -subscription-service
     -python
       -soap
          -qt
             -qualcomm-transaction-main.py
       -config
   -data-access-layer
      -python
        -dao
          -qualcomm_transaction-service.py

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,我只需要在返回Mock()对象并将值返回为20的路径中传递20

maxidMock = Mock()
maxidMock.return_value = 20

      @patch("dao.qualcomm_transaction_service.QualcommTransactionService.get_max_qualcomm_id",20) 
def test_lambda_handler(): 
 lambda_handler(event, None)
 maxidMock.assert_called_with(6)