在python unittest中使用globals()测试全局变量的创建

在python unittest中使用globals()测试全局变量的创建,python,python-requests,global-variables,python-unittest,Python,Python Requests,Global Variables,Python Unittest,我试图使用python中的globals()将HTTP请求的响应保存在全局变量中,以便以后使用该数据 def request_agent(agent_name, urL): r = requests.get(urL) data = r.json() globals()[agent_name] = data 但是,当我编写测试用例来验证该值是否已保存时,我会收到一个错误,表明变量未定义。下面是我的测试用例 class TinyTest(unittest.TestCase

我试图使用python中的globals()将HTTP请求的响应保存在全局变量中,以便以后使用该数据

def request_agent(agent_name, urL):
    r = requests.get(urL) 
    data = r.json()
    globals()[agent_name] = data
但是,当我编写测试用例来验证该值是否已保存时,我会收到一个错误,表明变量未定义。下面是我的测试用例

class TinyTest(unittest.TestCase):

    def test_request_agent(self):
        agent_name = 'location'
        url = 'http://free.ipwhois.io/json/'
        tt.request_agent(agent_name, url)
        self.assertEqual(eval(location['continent']), 'Europe')

我做错了什么?

我认为函数范围中的全局变量与测试范围中的全局变量不同。但不管怎样,我认为从单元测试访问全局范围是一种不好的做法,因为它们应该被隔离。如果您真的想这样做,您需要将测试中的全局变量作为参数发送。还有一个叫做Mock的东西,我自己没有试过,但我看到了一个很好的视频。它基本上允许您模拟http请求,比如:我认为函数范围中的全局变量不同于测试范围中的全局变量。但不管怎样,我认为从单元测试访问全局范围是一种不好的做法,因为它们应该被隔离。如果您真的想这样做,您需要将测试中的全局变量作为参数发送。还有一个叫做Mock的东西,我自己没有试过,但我看到了一个很好的视频。它基本上允许您模拟http请求,例如: