我已经用Python编写了一个程序,它使用两个不同的API与两个不同的服务(CKAN和MediaWiki)交互以获取数据。
特别地,有一个名为Resource的类,它请求上述服务的数据并对其进行处理。
在某个时刻,我得出结论,我的应用需要测试。问题是,我在网上和书中找到的所有示例都没有涉及这种情况。
例如,在Resource类中,我有一个方法:
我的问题是:如何测试这样的方法?或者说,在这里应该测试什么?
我考虑过将结果保存到硬盘上(pickle),然后在测试中加载并与使用 load_from_ckan() 初始化的对象进行比较。但是 CKAN 是社区驱动的平台,这种测试行为将是不可预测的。
如果存在任何关于自动化测试哲学的书籍(例如要测试什么,不要测试什么,如何使测试有意义等),请给我一个链接。
在某个时刻,我得出结论,我的应用需要测试。问题是,我在网上和书中找到的所有示例都没有涉及这种情况。
例如,在Resource类中,我有一个方法:
def load_from_ckan(self):
"""
Get the resource
specified by self.id
from config.ckan_api_url
"""
data = json.dumps({'id': self.id})
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
url = config.ckan_api_url + '/action/resource_show'
r = requests.post(url, timeout=config.ckan_request_timeout, data=data, headers=headers)
assert r.ok, r
resource = json.loads(r.content)
resource = resource["result"]
for key in resource:
setattr(self, key, resource[key])
load_from_ckan 方法从 CKAN API 获取有关资源的数据并将其分配给对象。虽然它很简单,但是...我的问题是:如何测试这样的方法?或者说,在这里应该测试什么?
我考虑过将结果保存到硬盘上(pickle),然后在测试中加载并与使用 load_from_ckan() 初始化的对象进行比较。但是 CKAN 是社区驱动的平台,这种测试行为将是不可预测的。
如果存在任何关于自动化测试哲学的书籍(例如要测试什么,不要测试什么,如何使测试有意义等),请给我一个链接。