2017-08-01 9 views
0

私は今朝それを調べ始めたので、私はPythonとユニットテストの初心者です。私は、いくつかのキー/ペア値と、それらのキー/ペアの1つが別のオブジェクトであるオブジェクトを持っています。Pythonユニットテスト - 関数のローカルJSONオブジェクトをテストするには正しいキー値のペアがありますか?

ie。

my_program.py 

    def my_function(self): 
     my_obj = { 
      "someKey": 1234-5678, 
      "locationId": self.location_id, 
      "environment": self.environment_name, 
      "metaData" : { 
       "log_id": self.last_log_id, 
       "satisfied": False 
      } 
     } 


tests_my_program.py 

import unittest2 
import mock 

    def test_should_check__my_function__payload_obj_is_set(self): 
     #code here to test the variable has all of those key/pair values 

は、どのように私は、このオブジェクトは常にこれらのキー/ペア値(someKey、locationIdなど)を持っていることを保証するためにユニットテストを書くのですか? 私のテストは別のpythonファイル(test_my_program.py)にありますので、my_objをテスト関数に偽装する必要がありますか?

この変数は関数にとってローカルなので、グローバルではありません。

+0

これはJSONではなく、Pythonの辞書です。 –

答えて

1
import unittest 
from my_program import my_obj 

class MyTest(unittest.TestCase): 
    def test_the_thing(self): 
     self.assertEqual(my_obj['key1']['key2'], 3) 

if __name__ == '__main__': 
    unittest.main() 

あなただけの値がtrue使用self.assertTrue(my_obj['key1']['key2'])またはself.assertFalse

であるかどうかを知りたい場合、私はあなたが「モックmy_obj」によって何を意味するかわからないが、あなただけに、他のモジュールからインポートすることができます試して。なぜあなたは本当のことを使うことができますか?

+0

申し訳ありませんが、私は元気ではっきりしていませんでした。 my_objは関数に対してローカルであり、グローバル変数ではありません。 – daze

+0

コードを提供して、意味を分かりますか? –

+0

私はできるだけ元の投稿を更新しようとしました – daze

関連する問題