2017-11-03 4 views
0

私はパラメータを模擬して追加しようとしていますが、どこが間違っているのか分かりません。Pythonユニットテストライブラリ - ParseError:文字列を期待する<MagicMock name = 'ClassPage.json.get()'

これは、これは私がパッチだテスト私は基本的に異なる値(NOメソッド)を有するClassPageと呼ばれるクラスを有している表す「のklass」を模擬しようとしている方法

class GrapheneHelper(): 

    @staticmethod 
     def convert_time_field(klass, field, default=None): 

      time = GrapheneHelper.get_json_field(klass, field, default) 

      if time is None: 
       return None 
      else: 
       return iso8601.parse_date(time) 

ありますClassPage:

@patch('gql.pages.content_page.ClassPage') 
def test_convert_time_field(self, mock_klass): 
    """ Return YYYY-MM-DDTHH:MM:FF in iso8601 format """ 

    mock_klass.json = {'time_field': '2017-09-18T23:09:33'} 
    expected_time = iso8601.parse_date('2017-09-18 23:09:33') 

    self.assertEqual(GrapheneHelper.convert_time_field(mock_klass, field='time_field', default=None), 'expected_time') 

私が取得エラー:ParseError: Expecting a string <MagicMock name='ClassPage.json.get()' id='4644743312'>

私は本当に近くだように私は感じて、私はwronだかを把握することができていませんg。私はMagicMockを試したことがあります。文書や、ブログを読んだりすることはありません。任意のアドバイスあなたが与えられたものに基づいて

答えて

0

をいただければ幸い、これは私が何を考えているが起こっている:

GrapheneHelper.get_json_fieldだからget()関数の戻り値をモックClassPage.json.get()

関数を呼び出します。

@patch('gql.pages.content_page.ClassPage') 
def test_convert_time_field(self, mock_klass): 
    """ Return YYYY-MM-DDTHH:MM:FF in iso8601 format """ 

    mock_klass.json.get.return_value = 'something expected' 

    time = '2017-09-18T23:09:57Z' 
    expected_time = '2017-09-18 23:09:57+00:00' 

    self.assertEqual(GrapheneHelper.convert_time_field(mock_klass, time, default=None), expected_time) 
+0

TY - あなたは私のエラーの内容を理解する助けになります。ほんとうにありがとう! –

+0

また、期待された時間に '' iso8601.parse'''を追加しました。 '' 'expected_time = iso8601.parse_date( '2017-09-18 23:09:33')' '' - 私は変更に私の質問を更新しました –

関連する問題