我们正在使用协议来创建一些合约测试。我们对此很陌生,所以我们真的不知道状态是如何运作的。现在我们只知道我们在 phare 中使用的 pharegiven
来自state
state setup body 调用的属性。
鉴于此消费者测试:
headers = {'Authorization': 'Token f921c9568ab910264187332ed17f8c5e3aaa0edf'}
(pact
.given('User exists and has resources')
.upon_receiving('Request for user resources')
.with_request('GET', f'/api/users/{user_id}/resources', headers=headers)
.will_respond_with(200, body=expected))
以及提供者上的验证者代码:
class ProviderTestCase(TestCase):
def test_service_provider_against_broker(self):
verifier = Verifier(provider="Provider", provider_base_url=PROVIDER_URL)
success, logs = verifier.verify_with_broker(
**BROKER_OPTS,
verbose=True,
provider_states_setup_url='https://webhook.site/82751898-e89d-4531-a86c-8bf5e1e35f88',
enable_pending=False,
)
self.assertEqual(success, 0)
然后,在运行该测试之前,我在 webhook 上的 POST 请求中获得以下正文:
{
"consumer": "Consumer",
"state": "User exists and has resources",
"states": [
"User exists and has resources"
],
"params": {}
}
在那里我看到了关键字params
。但我真的不知道如何填充它。我也不知道为什么states
是数组。我认为这个模块的文档非常不完整(或者至少我还没有找到一个好的文档)。
你知道如何从消费者那里发送参数吗?像 auth 令牌,或一些任意变量,在运行 de test 之前设置数据库。