我用 Python 编写了一个程序,它使用两个不同的 API 从两个不同的服务(CKAN 和 MediaWiki)获取数据。特别是,有一个类 Resource,它从上述服务中请求数据并对其进行处理。
在某些时候,我得出结论,需要对我的应用程序进行测试。问题是我在网上和书中找到的所有例子都没有处理这种情况。
例如,在 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 获取有关资源的数据并将其分配给对象。这很简单,但是...
我的问题是:如何测试这样的方法?或者我应该在这里测试什么?
我考虑了将结果腌制(保存)到硬盘的可能性。然后我可以在测试中加载它并与用 load_from_ckan() 初始化的对象进行比较。但 CKAN 是社区驱动的平台,此类测试的这种行为将是不可预测的。
如果有任何关于自动化测试哲学的书籍(比如测试什么,不测试什么,如何使测试有意义等),请给我一个链接。