我有一些想测试的代码,它是一个相当普通的GET请求包装器,但它的实现以不同的ID从API多次请求数据。
为测试添加模拟JSON响应是有问题的,因为有数百个具有这些ID的调用,而我们想针对一个固定的响应进行测试。
目标URI看起来像
https://someurl.com/api/v1/id/1234/data?params
。
我们遇到的问题是不想为每个模拟端点添加一行代码。
例如,与其说有
mocker.get('https://someurl.com/api/v1/id/1234/data?params',
json={},
status_code=200)
mocker.get('https://someurl.com/api/v1/id/5678/data?params',
json={},
status_code=200)
我想实现某种通配符匹配,像这样。
mocker.get(re.compile('https://someurl.com/api/v1/id/*/data?params'),
json={},
status_code=200)
如果我对文档理解正确的话,这应该是可以做到的,但这样做会返回一个错误。
Failed: [undefined]requests_mock.exceptions.NoMockAddress: No mock address: GET https://someurl.com/api/v1/id/1234/data?params