哈Ha!在使用REST API包装器库时,我遇到了一个问题。为了测试错误的服务器响应代码(400、500、403等)的处理,有必要在服务器上人为地创建条件以接收相应的代码。例如,使用正确配置的服务器,不容易获得500错误,并且某种程度上必须测试错误处理程序功能。我写了一个小的API来生成服务器错误的响应-httpme.tk
如何申请测试?
例如,有这样的代码(python3):
from requests import session as requests_session
session = requests_session()
session.hooks = {
'response': lambda r, *args, **kwargs: raise AccessError(' , .. ') if r.status_code == 403 else pass
}
class AccessError(Exception):
""" '' """
pass
def getter(url):
return session.get(url)
简而言之,该代码包含一个函数,该函数返回服务器对给定URL的GET请求的响应;如果由于请求而发生403错误,则会引发内部模块异常AccessError
。
此代码需要进行测试和调试。手动创建错误403的条件并不容易,例如,创建500则更为困难(服务器工作得很好)。测试人员不在乎服务器将在什么情况下发出403错误:他不是在测试API本身(例如),而是在测试调用它的函数。因此,要测试抛出带有403状态代码的异常,它可以这样做(python3 + pytest):
import pytest
from mymodule import
def test_forbidden():
with pytest.raises(AccessError):
getter('http://httpme.tk/403')
如何使用?
很简单。向中的服务器发送GET请求http://httpme.tk/<status_code>
。例如这样的(cURL):
curl -G http://httpme.tk/500
或像这样(python3):
from requests import get
get('http://httpme.tk/408') # <Response [408]>
里面有什么?
里面是一个小的Flask应用程序,它abort(status_code)
在每个请求上都调用一个函数。
就这样!
听到社区对此服务的有用性的评估很有趣。