我可以在Python中测试方法内的方法吗?
search.py
def SearchWeb(query=None):
"""Search via API"""
search = cool_api.api_request(query)
def _HandleResponse(search):
if search:
return search['result']
return _HandleResponse(search)
我想使用unittest
为_HandleResponse
创建测试方法
search_test.py
import unittest
class MyTest(unittest.TestCase):
def test(self):
response = {}
response['result'] = 'yes'
self.assertEqual(search._HandleResponse(response), 'yes')
但_HandleResponse
无法访问。我明白了:
AttributeError: 'module' object has no attribute '_HandleResponse'
我可以在_HandleResponse
方法之外移动SearchWeb
,这样可行,但想知道这是否可行?
答案 0 :(得分:1)
据我所知,这是不可能的。
每次调用函数时都会创建嵌套方法。这意味着您没有静态引用它,并且您无法将测试写入不存在的函数。您必须通过SearchWeb
函数进行测试。
旁注:从技术上讲,你可以做一些(复杂的)事情,但我认为没有一点值得一提。