项目调整涉及修改的内容非常多,并且发现测试脚本中有的使用pytest,有的使用unittest,有的直接通过python执行,比较混乱,需要后续慢慢优化,此次主要以迁移代码为主。但也修改了部分测试脚本中诸如编码方式、模拟导入等语句,但整体并不影响前后端的业务逻辑。
主要修改过程如下:
目录结构调整
-
添加vibe-blog子目录,用于存放前后端源代码,将frontend及backend迁移至vibe-blog。
-
新增pyproject.toml项目配置文件。将backend/requirements.txt、backend/reuqirements-test.txt中的依赖分别添加到配置文件中的dependencies和test组可选依赖。
uv add -r ./vibe-blog/backend/requirements.txt
uv add -r ./vibe-blog/backend/requirements-test.txt --optional test
同步所有依赖:
还需要将backend/pytest.ini的配置同步更新到[tool.pytest.ini_options]中。
-
合并tests测试用例,将backend目录下的tests迁移到根目录中的tests。
脚本调整
目录结构调整后,backend下的脚本无需调整导入语句。需要对tests中的测试脚本调整相应的导入语句,以及其他相关脚本的修正。
-
测试脚本中存在大量的sys.path.insert(...)语句,执行测试时会重复的将backend目录插入到sys.path中,实际可以在tool.pytest.ini_options中添加配置pythonpath = [".", "vibe-blog/backend"]就可以非常好的解决路径导入问题,pytest会自动将列表中的路径添加到sys.path中,测试脚本中的这些插入语句均可以去除,相应的导入语句只需相应的调整即可。
-
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进行清理。
-
更新一些测试脚本中的导入语句、断言结果;更新覆盖率、日志文件的输出目录为根目录下。
-
更新Docker相关部署文件
项目调整涉及修改的内容非常多,并且发现测试脚本中有的使用pytest,有的使用unittest,有的直接通过python执行,比较混乱,需要后续慢慢优化,此次主要以迁移代码为主。但也修改了部分测试脚本中诸如编码方式、模拟导入等语句,但整体并不影响前后端的业务逻辑。
主要修改过程如下:
目录结构调整
添加
vibe-blog子目录,用于存放前后端源代码,将frontend及backend迁移至vibe-blog。新增
pyproject.toml项目配置文件。将backend/requirements.txt、backend/reuqirements-test.txt中的依赖分别添加到配置文件中的dependencies和test组可选依赖。uv add -r ./vibe-blog/backend/requirements.txt uv add -r ./vibe-blog/backend/requirements-test.txt --optional test同步所有依赖:
还需要将
backend/pytest.ini的配置同步更新到[tool.pytest.ini_options]中。合并
tests测试用例,将backend目录下的tests迁移到根目录中的tests。脚本调整
目录结构调整后,
backend下的脚本无需调整导入语句。需要对tests中的测试脚本调整相应的导入语句,以及其他相关脚本的修正。测试脚本中存在大量的
sys.path.insert(...)语句,执行测试时会重复的将backend目录插入到sys.path中,实际可以在tool.pytest.ini_options中添加配置pythonpath = [".", "vibe-blog/backend"]就可以非常好的解决路径导入问题,pytest会自动将列表中的路径添加到sys.path中,测试脚本中的这些插入语句均可以去除,相应的导入语句只需相应的调整即可。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进行清理。更新一些测试脚本中的导入语句、断言结果;更新覆盖率、日志文件的输出目录为根目录下。
更新Docker相关部署文件