我正在尝试模拟对外部URL的单个请求,但是在文档中仅存在内部请求的示例(以'/'开头),在当前版本中无法添加非以'/'开头的路由器的aiohttp。 我正在使用pytest和pytest-aiohttp,这是请求代码的示例:
import aiohttp
import asyncio
async def fetch(client):
async with client.get('http://python.org') as resp:
return resp.status, (await resp.text())
async def main():
async with aiohttp.ClientSession() as client:
html = await fetch(client)
print(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
我想要做的断言非常简单,例如检查状态码,标头和内容。
答案 0 :(得分:0)
您可以(使用asynctest.patch)修补android {
.
.
.
defaultConfig {
minSdkVersion //your minimum SDK version
targetSdkVersion //your target SDK version
multiDexEnabled true // this is what you should add
}
}
dependencies {
compile 'com.android.support:multidex:1.0.3'
}
。但是在这种情况下,您需要使用ClientSession
方法和属性来实现简单的ResponseContextManager
。
答案 1 :(得分:0)
在您的评论中(在您的问题下方),您说您实际上是想模拟 aiohttp 响应。为此,我一直在使用第 3 方库 aioresponses
:https://github.com/pnuckowski/aioresponses
我将它用于集成测试,这似乎比直接模拟或修补 aiohttp 方法更好。
我把它变成了一个像这样的小 pytest 固定装置:
@pytest.fixture
def aiohttp_mock():
with aioresponses() as aioresponse_mock:
yield aioresponse_mock
然后我可以像 aiohttp 客户端/会话一样调用它:aiohttp_mock.get(...)