You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Conda构建中meta.yml配置pytest测试无执行的问题排查

解决conda build测试阶段pytest无法收集/找到测试用例的问题

核心原因

conda build的测试环节在隔离环境中运行,默认仅安装构建完成的包,不会自动将源码中的tests目录同步到测试环境——即便你的sdist包包含该目录,也不会自动复制到测试工作目录。另外,pytest --pyargs mypackage未收集到测试,是因为测试代码未被打包进安装包(通常tests目录不会被配置为安装内容),导致pytest无法从包内找到测试用例。

解决方案

1. 正确配置meta.yml的test.source_files

在meta.yml的test段明确指定复制源码中的tests目录到测试环境,注意路径要与conda build读取源码的路径匹配:

test:
  source_files:
    - tests
  commands:
    - python -c "import mypackage"  # 导入检查
    - pip check
    - pytest tests/  # 直接使用复制后的目录路径,无需加./前缀

2. 确认打包配置的合理性

确保pyproject.toml(或setup.py)中,既让sdist包含tests目录,又不将其作为安装内容(避免冗余文件进入用户环境):

# pyproject.toml示例配置
[tool.setuptools]
packages = ["mypackage"]
package_dir = {"": "src"}

[tool.setuptools.sdist]
include = ["tests/**/*"]  # 确保sdist包含tests目录

3. 调整测试命令的路径写法

测试阶段的工作目录并非源码根目录,./tests/会因路径不匹配报错,直接使用tests/即可(source_files已将目录复制到当前测试工作目录)。

4. 备选方案:通过模块路径调用测试

若上述配置仍有问题,可尝试通过模块路径执行测试(需确保tests目录下有__init__.py,使其成为可导入模块):

test:
  commands:
    - python -c "import mypackage"
    - pip check
    - pytest tests  # 以模块形式指定测试目录

验证步骤

  1. 重新生成sdist包,确认tar.gz内的tests目录完整无缺
  2. 执行conda build .,观察测试环节是否能找到tests目录并正常执行测试用例

内容的提问来源于stack exchange,提问作者Barzi2001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:33:20