Skip to content

【建议】优化项目目录结构,前后端及测试代码比较混杂,建议使用uv管理依赖,并整合前后端代码至vibe-blog #110

@freedomgod

Description

@freedomgod

项目调整涉及修改的内容非常多,并且发现测试脚本中有的使用pytest,有的使用unittest,有的直接通过python执行,比较混乱,需要后续慢慢优化,此次主要以迁移代码为主。但也修改了部分测试脚本中诸如编码方式、模拟导入等语句,但整体并不影响前后端的业务逻辑。
主要修改过程如下:

目录结构调整

  1. 添加vibe-blog子目录,用于存放前后端源代码,将frontendbackend迁移至vibe-blog

  2. 新增pyproject.toml项目配置文件。将backend/requirements.txtbackend/reuqirements-test.txt中的依赖分别添加到配置文件中的dependenciestest组可选依赖。

    uv add -r ./vibe-blog/backend/requirements.txt
    uv add -r ./vibe-blog/backend/requirements-test.txt --optional test

    同步所有依赖:

    uv sync --all-extras

    还需要将backend/pytest.ini的配置同步更新到[tool.pytest.ini_options]中。

  3. 合并tests测试用例,将backend目录下的tests迁移到根目录中的tests

脚本调整

目录结构调整后,backend下的脚本无需调整导入语句。需要对tests中的测试脚本调整相应的导入语句,以及其他相关脚本的修正。

  1. 测试脚本中存在大量的sys.path.insert(...)语句,执行测试时会重复的将backend目录插入到sys.path中,实际可以在tool.pytest.ini_options中添加配置pythonpath = [".", "vibe-blog/backend"]就可以非常好的解决路径导入问题,pytest会自动将列表中的路径添加到sys.path中,测试脚本中的这些插入语句均可以去除,相应的导入语句只需相应的调整即可。

  2. tests/backend/test_assembler_footnotes.py这个测试脚本中设置了sys.modules['services.blog_generator.prompts'] = _fake_prompts后,其他测试文件导入同一模块时都会得到这个模拟版本,收到模拟的get_prompt_manager = lambda: None,导致AttributeError: 'NoneType' object has no attribute 'render_code2prompt'。如果单独执行任一测试,可能通过,因为模块缓存是空的或未被污染。因此将这些语句在函数中执行,通过finally进行清理。

  3. 更新一些测试脚本中的导入语句、断言结果;更新覆盖率、日志文件的输出目录为根目录下。

  4. 更新Docker相关部署文件

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions