ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

llmware 测试体系实战:run-tests.py 入口、环境清理机制与各测试套件定向运行策略

2026/9/14 1:22:26 拓冰建站 浏览量
llmware 测试体系实战:run-tests.py 入口、环境清理机制与各测试套件定向运行策略 llmware 测试体系实战run-tests.py 入口、环境清理机制与各测试套件定向运行策略【免费下载链接】llmwareUnified framework for building enterprise RAG pipelines with small, specialized models项目地址: https://gitcode.com/GitHub_Trending/ll/llmware本文基于 llmware 仓库 tests/README.md 官方测试文档展开系统讲解 llmware 测试体系的前置依赖、环境变量配置、一键全量测试的环境清理机制、推荐的定向测试运行方式以及如何通过 pytest 参数控制测试输出。读完本文你可以在本地独立运行 llmware 的库管理、向量库、模型加载与检索等各模块测试并理解测试脚本背后的调用链与环境安全边界。测试体系概览与目录布局llmware 的测试代码集中在 tests 目录按功能模块拆分为 5 个子目录覆盖企业 RAG 管线的核心链路目录覆盖范围代表性测试文件tests/library库Library核心功能建库、加文件、导出、删除test_library.pytests/configs账户与路径覆盖配置多账户、自定义数据目录test_account_overrides.py、test_path_overrides.pytests/embeddings各向量数据库的 embedding 构建与语义查询test_all_embedding_dbs.pytests/models生成式/本地模型GGUF、Slim FX、Whisper.cpp 等加载与云端模型连通性test_gguf_model_load.py、test_cloud_model_providers.pytests/retrieval内存级解析与关键词检索test_search_in_memory.py除测试文件外tests 目录还包含测试运行的支撑组件tests/run-tests.py统一测试入口负责环境更新、清理后调用 pytesttests/set-env.shAPI Key 与数据库连接串的环境变量模板tests/utils.py提供带颜色输出和表格打印的Logger工具类。前置依赖pytest 与 tabulate官方文档明确测试框架依赖两个第三方包pip install pytest tabulatepytest是测试执行引擎tabulate的用途可以从源码确认——tests/utils.py 中的Logger类在log_table方法里调用tabulate(data, headersheaders, tablefmtgrid)用于把测试结果渲染为网格表格。各模型与检索测试如 test_search_in_memory.py均通过该Logger打印逐条查询的检索结果。此外需要特别注意两个运行前提来自 tests/README.md数据库/向量库资源必须先启动。针对特定数据库或向量数据库的测试要求对应服务处于运行状态。仓库的 scripts/docker 目录提供了现成的 compose 文件例如 docker-compose_mongo_milvus.yaml、docker-compose-pgvector.yaml、docker-compose-qdrant.yaml、docker-compose-neo4j.yaml、docker-compose-redis-stack.yaml可用于拉起对应资源。部分测试需要云模型提供商的 API Key。配置 API Key 与数据库连接环境变量tests/set-env.sh 是环境变量模板文件全部条目以注释形式给出按用途分为两组LLM API Keysset-env.sh变量对应提供商OPENAI_API_KEYOpenAIANTHROPIC_API_KEYAnthropicAI21_API_KEYAI21COHERE_API_KEYCohereREAD_GPT_API_KEYReadGPTGOOGLE_API_KEYGoogle注意取值必须是完整 .json 凭证文件的文本内容如$(echo creds.json)数据库 Key 与连接串set-env.sh变量用途COLLECTION_DB_URI替代的 MongoDB 连接串MONGO_ATLAS_CONNECTION_URIMongoDB Atlas 连接串MILVUS_HOST/MILVUS_PORT替代的 Milvus 主机/端口PINECONE_API_KEY/PINECONE_ENVIRONMENTPinecone 密钥与环境如gcp-starterNEO4J_URI/NEO4J_USERNAME/NEO4J_PASSWORD/NEO4J_DATABASENeo4j 连接四要素使用方式把需要测试的 Key 填入模板后执行source ~/set-env.sh加载到当前 shell官方文档示例中为家目录下的~/set-env.sh仓库内模板位于 tests/set-env.sh。云端模型连通性测试直接从环境变量读取这些 Key例如 test_cloud_model_providers.py 开头即通过os.environ.get(OPENAI_API_KEY, )等方式取得各提供商密钥。全量测试run-tests.py 与环境清理机制全量测试入口为一行命令python3 ./run-tests.py官方文档特别强调目前不推荐并发运行全部测试维护方正在更新自动化与测试范围以改善该能力。运行前的环境清理WARNING这是使用全量测试入口前必须知晓的行为。发起该脚本会在运行全部测试前清理环境清理动作包括卸载本地已安装的 llmware 模块从当前仓库安装 llmware 模块模拟用户从 PyPI 安装完全删除$HOME/llmware_data数据目录重置 Mongo 和 Milvusdrop 全部 collection——注意目前尚未扩展为重置 Postgres、SQLite 或其他向量库文档中还提到会运行./models/test_all_generative_models.py该测试会向测试系统拉取数 GB 的模型文件。源码级实现清理动作是如何落地的从 tests/run-tests.py 的源码可以确认上述清理动作的具体实现。RunTests类在__main__块中依次执行三步run-tests.pyupdate_llmware_install()L19-L26依次执行pip uninstall llmware -y与pip install .在仓库根目录保证测试针对的是当前仓库版本的 llmware而非环境中残留的旧版本。clean_the_environment()L29-L56通过shutil.rmtree删除$HOME/llmware_data和$HOME/llmware_data_custom两个数据目录与 test_path_overrides.py 中验证的自定义目录llmware_data_custom对应通过from llmware.resources import MongoDBManager执行MongoDBManager().client.drop_database(llmware)drop 整个llmware数据库通过pymilvus连接MILVUS_HOST默认localhost的 19530 端口遍历utility.list_collections()并逐个drop_collection。pytest.main(sys.argv[1:])将命令行参数原样透传给 pytest 执行测试。一个值得注意的源码细节是update_llmware_install()与clean_the_environment()位于__main__块中、在任何参数透传之前无条件执行。从源码结构看这意味着即使是定向运行某一模块如python3 ./run-tests.py library也会先完成安装更新与环境清理再进入 pytest。因此运行该入口前应确认 MongoDB 与 Milvus 服务可用且$HOME/llmware_data中无需保留的数据已被备份。推荐方式定向运行特定文件夹或单个测试文件官方文档将只跑特定文件夹或文件作为推荐测试方式——除非 PR 涉及大范围跨模块改动否则通常跑 23 个针对性测试并辅以手工验证更高效。文档同时表示测试自动化覆盖套件仍在更新中欢迎社区贡献改进自动化与覆盖面此外官方建议以近期示例examples作为正式测试之外的良好补充验证手段尤其是在代码库的特定目标区域。定向运行示例# 运行某个文件夹下的全部测试 python3 ./run-tests.py library# 运行单个测试文件README 中的示例写法 python3 ./run-tests.py models/test_all_generative_models.py由于 run-tests.py 将sys.argv[1:]直接透传给pytest.main任何合法的 pytest 目标目录、文件、节点 ID都能作为参数使用。当前 tests/models 目录实际包含的测试文件有test_agent_llmfx_process.py、test_cloud_model_providers.py、test_cohere_command_r_model.py、test_gguf_model_load.py、test_hf_model_load_prompt.py、test_prompt_benchmark_test.py、test_slim_fx_model_load.py、test_whisper_cpp_model_load.py可按需指定其中任意一个文件进行验证。测试套件的默认数据库与覆盖方式各测试文件头部的 docstring 说明了数据库选择的约定默认在 MongoDB 上运行可通过一行代码切换如 test_library.py、test_path_overrides.py 中注明LLMWareConfig().set_active_db(sqlite)这使得库级功能测试建库、加文件、查询、删除可以在无外部数据库的环境下用 SQLite 完成。控制测试输出-s 开关pytest 默认只在测试失败时显示打印输出。若希望看到所有测试运行期间的打印内容追加-s参数即--capturenopython3 ./run-tests.py library -s这对调试解析、检索类测试尤其有用——例如 test_search_in_memory.py 会在运行过程中逐条打印每个合同文件、每个查询词含空查询、单 token、多 token 混合场景及其命中结果。典型测试用例解读验证链路如何组织结合几个代表性测试文件可以看出 llmware 测试的通用组织模式建库 → 灌入样例数据 → 执行功能 → 断言 → 清理库核心功能test_library.pytest_core_library_functions依次完成——用Library().create_new_library(LibraryABC)建库通过LibraryCatalog().all_library_cards()断言库名存在用Setup().load_sample_files()加载样例文件并library.add_files(...)灌入SmallLibrary调用export_library_to_jsonl_file与export_library_to_txt_file分别验证 JSONL 与纯文本导出断言文件大小大于 100 字节最后delete_library(confirm_deleteTrue)删除并断言库名已消失。向量数据库矩阵test_all_embedding_dbs.py该文件以统一的generic_embedding_and_query流程覆盖 Milvus、Neo4j、ChromaDB、FAISS、LanceDB、Qdrant 等向量库L28-L80每个用例遵循建库 → 加文件 → 建 embedding → 语义查询 → 断言有结果 → 删库的固定链路另有一个test_unsupported_embedding_db用例L19-L25用非法库名milvusXYZ验证UnsupportedEmbeddingDatabaseException异常路径。其中 Qdrant 用例使用pytest.mark.skipif(not qdrant_installed(), ...)装饰器在 Qdrant 客户端未安装时自动跳过——这提示针对特定向量库的测试除了服务要启动客户端库如 pymilvus、qdrant-client也需要就位。账户与路径覆盖test_account_overrides.py验证 llmware 的隐式创建自定义账户能力——以account_namecustom_account123建库断言账户名出现在library.library_main_path中并验证generate_knowledge_graph()生成的 NLP 产物落在自定义账户的/nlp路径下。test_path_overrides.py 则通过LLMWareConfig.set_home(...)与set_llmware_path_name(...)验证将数据目录迁移到llmware_data_custom后库主路径、查询链路仍然正常——这也正是 run-tests.py 清理时一并删除llmware_data_custom的原因。小结llmware 的测试体系可以概括为三个要点统一入口tests/run-tests.py 先执行重装 llmware 清理数据目录 重置 Mongo/Milvus再透传参数给 pytest保证每次运行都基于干净环境定向优先日常开发与 PR 验证推荐python3 ./run-tests.py 目录或文件 [-s]只对受影响的模块跑测试环境自给通过 set-env.sh 模板配置 API Key 与连接串用 scripts/docker 下的 compose 文件拉起所需的数据库与向量库即可独立复现各套件的运行前提。在按上述步骤配置后你可以先从一个轻量起点验证环境如python3 ./run-tests.py configs -s再逐步扩展到 embeddings 与 models 目录完成对 llmware RAG 全链路的测试覆盖。【免费下载链接】llmwareUnified framework for building enterprise RAG pipelines with small, specialized models项目地址: https://gitcode.com/GitHub_Trending/ll/llmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考