我有一个应用程序,需要使用内部开发的 python 自动化进行测试。最初,该应用程序是使用 Swagger 2.x 规范开发的。现在已迁移到使用 Open API 3.x
当它是 Swagger 2.x 规范时,我曾经使用 swagger-codegen-cli-2.4.21.jar 来生成 python 客户端库,我们最终使用它来编写自动化。使用 2.4.21 jar,我们可以禁用客户端验证(configuration.py)
但是在迁移到 OpenAPI 3.x 后,我无法使用 2.4.21 jar,因为它不受支持。所以我使用 3.0.36 jar 来生成 python 客户端库。但这没有禁用客户端验证的选项(在configuration.py中)。这实际上会产生很多问题,因为我们在 GET 调用期间收到 ValueErrors。
我看到有一些讨论发生在同样的事情上,但没有一个足够结论性的,以至于它实际上在 3.x 中得到了修复
https://github.com/OpenAPITools/openapi-generator/pull/4137
https://github.com/swagger-api/swagger-codegen/issues/5530
https://github.com/swagger-api/swagger-codegen/pull/9717
所以我需要帮助来了解这是否仍然是一个未解决的问题(或者)它在某些 3.x 版本中已修复..?如果尚未修复,是否有解决方法来解决此问题..?
截至目前,我们正在注释所有 ValueErrors 以解决该问题,但不建议这样做,因为我们在 POST 调用期间失去了验证功能。
在
python-nextgen
(最新的 Python 生成器)上它没有实现(您可以在创建 disabled_client_side_validations
对象时指示可以使用 configuration
跳过哪种类型的验证,也许适合您?)。
configuration
对象还包含一个属性client_side_validation
,它似乎是用于此目的,但目前尚未实现。
目前唯一的选择是保留它或删除它以进行所有操作。
我使用 OpenAPI Generator 7.1.0 创建 Python 代码。现在,对于每个 API 端点,都有 3 种不同的方法可用。让我们以端点方法 auth_login_post 为例。现在还有端点方法 auth_login_post_without_preload_content 和 auth_login_post_with_http_info。
概览示例:
auth_login_post 的响应主要包含经过验证的响应负载。 auth_login_post_with_http_info 的响应与 auth_login_post 几乎相同,但添加了 HTTP 信息,例如响应标头和响应状态。
但是,如果您不想验证响应 JSON,则可以采用 auth_login_post_without_preload_content。在这种情况下,响应的 JSON 有效负载未经验证,并以 Python 字节字符串的形式提供给您。