falcon框架的pytest“client”fixture
pytest-falcon-client的Python项目详细描述
pytest falcon客户端
用于Falcon Framework的pytestclient
夹具。
安装
pip install pytest-falcon-client
设置
Plugin提供了make_client
fixture,您可以通过将falcon.API
实例作为参数按原样使用它:
importpytestfromyout_applicationimportcreate_api@pytest.fixturedefapi():returncreate_api()deftest_something(make_client,api):client=make_client(api)got=client.get('/your_url/42/')assertgot=={'awesome':'response'}
为了更简单的使用,您可以定义自己的client
设备:
importpytestfromyout_applicationimportcreate_api@pytest.fixturedefclient(make_client):api=create_api()returnmake_client(api)deftest_something(client):got=client.get('/your_url/42/')assertgot=={'awesome':'response'}
断言示例
将响应体获取为json,并为状态代码
执行自动断言deftest_something(client):got=client.get('/your_url/42/')assertgot=={'some':'staff'}
获取响应体作为json,并为自己的状态代码执行自动断言
deftest_something(client):got=client.get('/your_url/42/',expected_statuses=[400,401])assertgot=={'some':'stuff'}
按原样获取响应对象并跳过任何自动断言
deftest_something(client):response=client.get('/your_url/42/',as_response=True)assertresponse.status_code==400assertresponse.json=={'some':'stuff'}
每个请求的自定义自动断言
例如,您希望断言每个响应都有
Access-Control-Allow-Origin
具有值falconframework.org
的头。
您可以使用自定义ApiTestClient
来完成此操作,如下所示:
importpytestfrompytest_falcon_clientimportApiTestClientfromyout_applicationimportcreate_apiclassCustomApiTestClient(ApiTestClient):defresponse_assertions(self,response):# You can do any automatic assertions here for every requestassertresponse.headers['Access-Control-Allow-Origin']=='falconframework.org'@pytest.fixturedefclient():api=create_api()returnCustomApiTestClient(api)deftest_something(client):response=client.get('/your_url/42/',as_response=True)assertresponse.status_code==400assertresponse.json=={'some':'stuff'}
模拟一些默认的客户端行为
如果你的服务依赖于一些默认的客户端行为,比如头,
饼干还是别的您可以为每个请求设置此行为
使用自定义ApiTestClient
:
importpytestfrompytest_falcon_clientimportApiTestClientfromyout_applicationimportcreate_apiclassCustomApiTestClient(ApiTestClient):defprepare_request(self,method,expected_statuses,*args,**kwargs):kwargs['headers']={'Origin':'falconframework.org'}# add `ORIGIN` header to every requestreturnargs,kwargs,expected_statuses# should returns all of this@pytest.fixturedefclient():api=create_api()returnCustomApiTestClient(api)deftest_something(client):got=client.get('/your_url/42/',as_response=True)assertgot=={'some':'stuff'}
请看tests
中的更多示例。