[python] for のループで、要素とインデックスを同時にとる for 分で要素とそのインデックスをとりたい場合 idx = 0 for item in ["aaa", "bbbb", "ccc"] : print "%s : %s" % (idx, item) idx += 1 12345678 for 分で要素とそのインデックスをとりたい場合 idx = 0for item in ["aaa", "bbbb", "ccc"] : print "%s : %s" % (idx, item) idx += 1 0 : aaa 1 : bbbb 2 : ccc enumerate を使えば一発 for idx, item in enumerate(["aaa", "bbbb", "ccc"]) : print "%s : %s" % (idx, item) 1234 for idx, item in enumerate(["aaa", "bbbb", "ccc"]) : print "%s : %s" % (idx, item) 0 : aaa 1 : bbbb 2 : ccc
[python] 単体テスト メソッドをモック化し、メソッドの結果を検証する メソッド自体をモック化し、そのメソッドの呼び出しの検証する また、メソッド呼び出しの結果のオブジェクトのメソッド呼び出しを検証する。 # モック化した、codecs.open を mockMethod として保存する with patch('codecs.open') as mockMethod: # open("path/to/file", "a", "utf-8") を呼ぶと期待 expectedStart = [ call("path/to/file", "a", "utf-8")] # 検証 mockMethod.assert_has_calls(expectedStart) # open の結果のオブジェクトが、write("data\n") を呼ぶと期待 expect_call = call().write("data\n" ) # 検証 self.assertIn(expect_call, mockMethod.mock_calls) 12345678910111213 # モック化した、codecs.open を mockMethod として保存するwith patch('codecs.open') as mockMethod: # open("path/to/file", "a", "utf-8") を呼ぶと期待 expectedStart = [ call("path/to/file", "a", "utf-8")] # 検証 mockMethod.assert_has_calls(expectedStart) # open の結果のオブジェクトが、write("data\n") を呼ぶと期待 expect_call = call().write("data\n" ) # 検証 self.assertIn(expect_call, mockMethod.mock_calls)