如何从契约状态传递参数
How to pass arguments from in pact state
我们正在使用 pact 创建一些合同测试。我们对此很陌生,所以我们真的不知道状态是如何运作的。现在我们只知道我们在 given
中使用的 phare 出现在状态设置主体调用的 state
属性 中。
鉴于此消费者测试:
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 令牌,或者一些在测试之前设置数据库的任意变量是 运行.
Pact Python 当前不支持 Pact 规范 V3,后者支持 multiple states with parameters。
如果您的消费者使用 支持 V3 的语言,您可以使用支持此功能的CLI verifier。
我们正在使用 pact 创建一些合同测试。我们对此很陌生,所以我们真的不知道状态是如何运作的。现在我们只知道我们在 given
中使用的 phare 出现在状态设置主体调用的 state
属性 中。
鉴于此消费者测试:
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 令牌,或者一些在测试之前设置数据库的任意变量是 运行.
Pact Python 当前不支持 Pact 规范 V3,后者支持 multiple states with parameters。
如果您的消费者使用 支持 V3 的语言,您可以使用支持此功能的CLI verifier。