用于生成带有任何状态代码的服务器响应的API

哈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)在每个请求上都调用一个函数



链接到GitHub



就这样!



听到社区对此服务的有用性的评估很有趣。




All Articles