是否有一个自包含存储库的示例,显示如何执行PyFlink(特别是1.13)的SQL单元测试?X(如果可能的话)?
这里有一个相关的SO问题,建议使用PyFlink本身的一些测试。我遇到的问题是,PyFlink repo假设一堆东西在Java类路径上,并且一些Python实用程序类可用(它们不是通过PyPi apache-flink分发的)。
我做了以下的事情:
- 从PyFlink复制
test_case_utils.py
和source_sink_utils.py
到我的项目。 - 复制一个示例单元测试(这个是由相关的SO问题建议的)。
当我尝试运行测试时,我得到一个错误,因为测试用例无法确定要下载哪个版本的Avro jar (download_apache_avro()
失败,因为此代码试图通过运行mvn help:evaluate -Dexpression=avro.version
来评估avro.version
的值)
然后我添加了一个虚拟的pom.xml
,定义了avro.version
的Maven属性(值为1.10.0
),并且加载了我的单元测试用例。
我现在得到一个新的错误,我的测试被跳过:
'flink-table-planner*-tests.jar' is not available. Will skip the related tests.
我不知道如何解决这个问题。我已经尝试将flink-table-planner
和flink-table-planner-blink
的依赖关系与<type>test-jar</type>
添加到我的虚拟pom.xml中,但它仍然失败。
这开始让人觉得做一些本应该很琐碎的事情真的很痛苦:PyFlink项目的基本TDD。是否有一个真实的Python项目示例,展示了如何使用PyFlink设置用于单元测试SQL的测试环境?
您可以参考https://github.com/dianfu/pyflink-faq/tree/main/testing,它提供了如何在外部项目中编写单元测试的示例。