问题标签 [pact-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2351 浏览

python - Pact:如何设置提供者状态

我正在查看 Pact 的Python 实现并尝试设置提供程序状态。似乎这样做的方法是让提供者在服务中内置一个端点,该端点被调用以将提供者置于正确的状态。问题是我找不到任何关于该端点实际应该是什么样子的文档。输入是什么,返回什么等等。

我尝试查看默认的ruby​​ 实现,它似乎暗示了一种完全不同的机制,用于将提供程序置于某种状态。看起来它使用了一个 ruby​​ 模块,该模块require由验证程序脚本获取,根本不涉及 HTTP 请求。

设置提供者状态的正确方法是什么?如果它需要设置额外的端点,我需要知道该端点应该是什么样子。如果需要将类/模块导入验证程序脚本,我需要知道它是如何用 ruby​​ 以外的语言实现的。

0 投票
1 回答
726 浏览

python - 协议:验证数组是否包含匹配的哈希

我有一个返回哈希数组的服务,其顺序是不确定的。我需要验证是否存在一个具有特定键/值的散列,并且该散列填充了数据,但其余散列我不关心它们的数据。例如,如果服务返回:

我想验证在数组中是否有一个具有 的散列"key":"meaningful",并且该data散列中的散列具有regex与正则表达式匹配的值的键,其中的键integer是整数,并且其键boolean是布尔值。我不在乎其他哈希是否有数据,或者他们拥有的数据是否与此模式匹配。

我不能使用EachLike,因为这将针对所有哈希验证架构,而不仅仅是具有正确的哈希key。我也尝试过这样的事情:

但它只是试图验证结果数组中的第 0 个元素,这意味着它试图验证:

我想要的可能吗?

0 投票
1 回答
441 浏览

pact - QA 团队的 pact -python

我正在尝试在本地设置 pact python 项目并面临问题。如果你能在这些问题上帮助我,那就太好了

看来我们必须从消费者端使用 localhost:1234 ?. 我们可以使用真实服务代替模拟服务吗?如果我使用 localhost:1234 ,则生成了协议,但是如果我使用真实服务,则会出现错误 所以我的问题是,当我们从消费者方面创建协议时,我们是否需要始终使用 Mock 服务((本地主机:1234)

第二个问题:我来自 QA 团队,认为协议应该由 DEV 团队而不是 QA 团队编写。我的假设正确吗?如果是,这些协议将如何帮助 QA 团队?

消费者.py

test_consumer.py:

先感谢您,

0 投票
1 回答
434 浏览

pact - 协议验证程序因 Encoding::UndefinedConversionError: "\xE2" from ASCII-8BIT to UTF-8 失败

我可以使用下面的模拟服务进行模拟,但是当我尝试针对提供者验证模拟时,它会抛出错误。我怀疑是因为日期值。你能帮我看看可能是什么问题吗

模拟杰森文件:

@Mattthew - 感谢您的调查。我已经通过重新运行模拟清理了模拟。我没有模拟整个服务响应,而是只模拟了一项。

模拟代码

模拟 JSON

真正的服务提供商回应

当我针对真正的提供者运行时出错: 1)验证消费者和提供者之间的协议鉴于系统的健康状况良好,使用 GET 进行检查的请求/返回具有匹配正文 失败/错误的响应:期望(response_body)。 to match_term expected_response_body, diff_options Encoding::UndefinedConversionError: "\xE2" from ASCII-8BIT to UTF-8

0 投票
1 回答
44 浏览

pact - 调用真实的 Web 服务代码以创建协议文件

你能帮我解决以下情况吗?

我正在按协议做 poc,需要帮助来理解这个概念。我们是否需要调用真正的 Web 服务调用代码才能创建契约文件?如果是,如何为现有 API 代码创建协议文件

我的理解是callAPI是真正的生产网络服务调用?我对么 ?如果是,您是否有任何示例代码可以从真实服务返回请求的响应。我有点卡在这个特定的部分来完成我的 POC 协议

先感谢您

0 投票
3 回答
3775 浏览

python-3.x - 实际交互与模拟 MockService 的预期交互不匹配

我对 python 和合同测试都是新手。我正在尝试使用pact-python.

这是测试文件test_posts_controller.py

在这里,我试图点击JSONPlaceholder

我正在使用pytest命令来运行测试。

但我收到以下错误。我不知道我错过了什么。

我已经尝试过pact.setup()pact.verify()但我仍然遇到同样的错误。有人可以帮我解决这个问题吗?

而且它也不会创建pactfile。我必须设置什么?

0 投票
1 回答
235 浏览

https - 如何通过 pact-python 模拟 https 服务器,你能给我一个例子吗

我无法根据 API 模拟 https 服务,请给我一些建议

python版本:3.6.5 pact-python:1.0 pytest:5.3.5平台: windows

错误消息: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='localhost', port=1234): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL rou tines', 'tls_process_server_certificate', '证书验证失败')],)",),))

过程:

我尝试通过 pact-python 模拟 https 服务器,所以我设置 ssl=True 并且不设置 sslcert 和 sslkey,它无法工作。然后我尝试使用openssl工具创建一个自签名的sslcert和sslkey,然后设置选项:sslcert ='server.crt',sslkey ='server.key',它仍然不起作用。这是一个非常简单的例子,我只想模拟一个 https 服务器:

0 投票
1 回答
332 浏览

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

我正在使用 Pactman 和 pact-python 为 CDC 测试做 POC。我能够生成协议文件并使用提供者 Base url 验证协议,而无需注册到协议代理,我正在使用以下方法。它将检查任何失败,这是最佳实践还是我需要使用代理?

0 投票
1 回答
177 浏览

python - 警告:使用 pact-python 验证协议时忽略不支持的匹配规则

我是 Pact 的新手,我正在尝试使用 pact-python 验证提供者方面的协议,但一些匹配规则被忽略了。

警告:忽略不支持的匹配规则 {"$.num_issues"=>{"matchers"=>[{"match"=>"integer"}], "combine"=>"AND"}, "$.error"=> {"matchers"=>[{"match"=>"type"}], "combine"=>"AND"}, "$.response[0].issue_id"=>{"matchers"=>[{" match"=>"type"}], "combine"=>"AND"}, "$.response[0].msg"=>{"matchers"=>[{"match"=>"type"}] , "combine"=>"AND"}, "$.response[0].similar_fix_found"=>{"matchers"=>[{"match"=>"type"}], "combine"=>"AND" }, "$.response[1].issue_id"=>{"matchers"=>[{"match"=>"type"}], "combine"=>"AND"}, "$.response[1].msg"=>{"matchers"=>[{"match"=>"type"}] , "combine"=>"AND"}, "$.response[1].similar_fix_found"=>{"matchers"=>[{"match"=>"type"}], "combine"=>"AND" }} 用于路径 ['body']

Consumer 是基于 Java 的 API,Provider 是基于 Python 的 API。

手动将协议规范版本更改为 2.0.0 也没有按要求工作。

任何人都可以提出一些建议..?

0 投票
1 回答
200 浏览

python-3.x - Pact-python:POST 调用的消费者协议失败

我正在尝试使用 pact-python 库为 POST 端点创建消费者方协议。但它失败并显示“缺少请求”的错误。

这不是进行 POST API 调用的客户端代码

这是我创建消费者协议的测试类。

测试失败,出现以下错误。

create_user(request) 正在执行,但交互仍然没有记录在 pact 模拟服务器上。

注意: GET API 协议创建工作正常。只有 POST 失败。

感谢帮助。