Python SDK/Tool 开发指南
Contents
Python SDK/Tool 开发指南#
python/
中有两个组件,一个Python SDK,一个诊断工具OpenMLDB Tool。
SDK#
Python SDK本身不依赖测试用的pytest和tox库,如果你想使用tests测试文件进行测试,可以通过以下方式下载测试依赖。
pip install 'openmldb[test]'
pip install 'dist/....whl[test]'
测试方法#
在根目录执行make SQL_PYSDK_ENABLE=ON OPENMLDB_BUILD_TARGET=cp_python_sdk_so
,确保python/openmldb_sdk/openmldb/native/
中使用的是最新的native库。测试通常需要连接一个OpenMLDB集群,如果你还没有启动集群,或对服务组件有代码改动,还需要编译TARGET openmldb,并启动onebox集群,可参考steps/test_python.sh
的启动部分。
安装包测试:安装编译好的whl,再
pytest test/
。可直接使用脚本steps/test_python.sh
。动态测试:确认pip中无openmldb,也不要安装编译好的whl,在
python/openmldb_sdk
中执行pytest tests/
即可。这种方式可以方便调试代码。
只运行部分测试,可以使用:
cd python/openmldb_sdk
pytest tests/ -k '<keyword>'
pytest tests/xxx.py::<test_func>
pytest tests/xxx.py::<test_class>::<test_func>
-k
使用方式见keyword expressions。
Tool 测试#
由于Tool中的诊断工具静态诊断需要ssh免密(其他子命令不需要ssh),所以,即使在本地测试(本地ssh到本地),也需要将当前用户的ssh pub key写入当前用户的authorized_keys。
普通测试:
cd python/openmldb_tool
pytest tests/
测试如果需要python log信息(成功的测试也会打印):
pytest -so log_cli=true --log-cli-level=DEBUG tests/
也可以使用module模式运行,适合做实际运行测试:
python -m diagnostic_tool.diagnose ...
Conda#
如果使用Conda环境,pytest
命令可能找到错误的python环境,而导致类似ModuleNotFoundError: No module named 'IPython'
的问题。请使用python -m pytest
。