当前位置: 首页 > 知识库问答 >
问题:

消费者驱动的合同测试(使用Pact)-最佳实践

秦安怡
2023-03-14

我正在使用Pactman和pact-python为CDC测试做一个POC。我可以生成协议文件和验证协议与提供商的基本url而不注册到协议代理,我使用以下方法。它将检查任何失败,这是最好的做法还是我需要使用代理?

import re
result = []
win_cmd = 'pact-verifier --provider-base-url=https://jsonplaceholder.typicode.com --pact-url=./src/Consumer-Provider-pact.json'
process = subprocess.Popen(win_cmd,
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
    #print(line)
    result.append(line)

status = re.split('failure|failures',str(result))[-2].split(',')[-1]
if int(status) == 0:
    print('success')

共有1个答案

安奇
2023-03-14

请参阅https://docs.pact.io/pact_broker/#why-do-i-need-one

您可以在没有pact代理的情况下完成pact生成和验证步骤,但是,如果没有代理,您将无法实现使用pact进行合同测试的全部好处。你会错过的主要两件事是:

  • 在部署应用程序之前确保通过合同测试的能力
  • 使用协定确保服务之间的向下兼容
  • 能够在协议更改时触发验证

Pact Broker允许您将Pact构建到发布管道中。但是,如果你刚刚开始,试着让一个管道在没有管道的情况下工作,看看你的进展如何。当你准备好尝试更高级的东西,开始使用一个。

阅读有效的协议设置指南,了解如何将协议逐步添加到您的CI/CD管道中。

 类似资料:
  • 我是一个新的编写PACT测试用例的人。我有一个非常简单的场景,一个微服务运行在dev服务器上,它根据路径变量返回true或false(这是一个GET调用)。如何编写生成协议测试用例?如何建立一个代理服务器来发布协议?现在我只关心消费者端。 首先,我编写了以下代码? OrdermsConsumerTest 这里我有点困惑@PactTestFor(providerName=“orderms-provi

  • 我是新来的。我的项目是Java项目。我通读了pact文档,找到了github项目https://github.com/dius/pact-jvm/tree/master/pact-jvm-consumer-junit,我将其导入到eclipse IDE中。我被困在这里了。1.首先运行哪个测试。ExampleJavaConsumerPactRuleTest还是ExampleJavaConsumerP

  • 我读过类似这样的文章,其中建议在提供者端验证存在于使用者的特性分支中的契约,实际上允许在合并到master之前对契约进行“预验证”。然而,我读过来自Pact团队的其他文档,说明了相反的情况。在达到契约涅槃的步骤中,它声明“要在您的提供商的配置项中保持绿色构建,而不是验证最新的整体契约,它应该验证配置项中标记有”master“的最新版本的契约。”在这里,我假设“最新的整体协议”是指发布给协议代理的消

  • 你们中有人知道用SOAP web服务实现消费者驱动的契约的方法或工具吗?我有一个发布SOAP web服务的遗留Java应用程序,用Apache CXF实现,由一群Spring Boot Java微服务使用。我已经在使用Pact和Spring Cloud Contract来测试我在微服务之间的REST调用,但是找不到一种方法来使用这些相同的工具或任何其他工具来实现SOAP web服务。

  • 我已经为契约测试做了演示应用程序。下面是我提到的链接。我已经改变了一些东西,像图案匹配器和体型。https://www.javacodeGeeks.com/2017/03/Consumer-drived-testing-pact-spring-boot.html 我能够从消费者发布协议,并从提供方验证它。 我也被要求从消费者端验证协议。例如。使用者将json发送给提供者以创建新用户。 但现在con

  • 我正在执行一些测试,如果使用者设置了某个ID或任何文本,而这些ID或文本在提供者数据库中并不存在,那么我希望在提供者测试中执行以下步骤 接收带有以下信息的协议文件:首先需要设置哪些内容 然后我将有我的函数,它将开始将那些不可用的数据插入数据库 然后调用API以提供实际响应。 现在我想知道,消费者应该使用哪个字段来让提供者知道,在实际的API调用之前需要一些先决条件或预设置。