我正在努力了解应该和不应该测试的内容。即使在阅读了S.O.的其他问题/答案之后,我仍然没有真正理解它。我工作的一位高级开发人员说我的所有代码都应该进行测试,但是测试它的部分内容似乎很有必要 - 即当这些部分只使用已经过测试的代码时。
以下示例包含 http请求函数和获取用户名函数。所有获取用户名功能都会调用 http请求函数。因为我正在使用Testbed,所以没有发出的HTTP请求,所以我们没有测试返回数据的正确性。那么我还应该测试获取用户名功能吗?
正在测试的文件中的代码
def fetch_url(url, method=urlfetch.GET, data=''):
"""Send a HTTP request"""
result = urlfetch.fetch(url=url, method=method, payload=data,
headers={'Access-Control-Allow-Origin': '*'})
return result.content
def get_user_name():
"""Get the name of the current user"""
url = '{}/user?access_token={}'.format(GITHUB_API_URL, get_access_token())
result = json.loads(fetch_url(url))
return result['login']
以下是测试:
class TestUrlFetch(unittest.TestCase):
"""Test if fetch_url sending legitimate requests"""
def setUp(self):
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_urlfetch_stub()
def test_fetch_url(self):
from console.auth import fetch_url
# Grab content via a URL fetch
content = fetch_url('https://google.com')
# Test that content is not empty
self.assertIsNotNone(content)
def tearDown(self):
self.testbed.deactivate()
如上所述,我应该编写另一个测试来测试get_user_name
函数吗?
答案 0 :(得分:3)
取决于测试方法,但我认为测试每行代码对于需要维护的代码是一个好主意。这并不意味着每条线都需要自己的测试。您可以使用coverage.py之类的工具查看测试涵盖的行。
答案 1 :(得分:1)
似乎可以测试它的一部分 - 即当这些部分仅使用已经过测试的代码时。
你怎么知道你正在一起正确使用这些部件?
单元测试可以快速捕获编程错误 - 接口中的错误和更改。