2017-08-01 70 views
0

我刚刚开始研究它,今天早上我是新来的Python和单元测试。我有一个对象具有多个键/值对以及其中一个键/对是另一个对象。python单元测试 - 如何测试函数本地JSON对象具有正确的键值对?

即。

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