0

我们正在使用协议来创建一些合约测试。我们对此很陌生,所以我们真的不知道状态是如何运作的。现在我们只知道我们在 phare 中使用的 pharegiven来自statestate 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 之前设置数据库。

4

1 回答 1

1

Pact Python 目前不支持 Pact Specification V3,它支持带参数的多个状态

如果您的使用者使用的语言支持 V3,您可以使用支持此功能的CLI 验证程序。

于 2022-02-20T22:13:50.557 回答