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

从unittest迁pytest:如何基于模块名而非路径实现测试发现?

从已安装模块运行pytest测试的正规方法

当然有啦!pytest完全支持你想要的这种从已安装模块而非源码目录运行测试的方式,和你用python -m unittest myproj.tests的逻辑完全对应,操作起来也很简单:

  • 直接指定已安装的测试模块路径
    你只需要在终端里运行:

    pytest myproj.tests
    

    要是想指定更具体的测试子模块甚至单个测试用例,也可以这么写:

    pytest myproj.tests.test_auth
    pytest myproj.tests.test_auth::TestLogin::test_successful_login
    

    这样pytest会直接去系统中已安装的myproj包里面查找对应的测试模块,完全绕过本地源码目录,正好符合你想验证MANIFEST.in是否遗漏文件的需求——如果测试因为找不到某个依赖文件失败,大概率就是MANIFEST.in没把这个文件加进去。

  • 确保测试模块是包的一部分
    要注意你的测试目录tests得是myproj的子包,也就是myproj/tests目录下要有__init__.py文件(哪怕是空的),这样在执行setup.py install的时候,测试模块才会被正确安装到site-packages里,pytest才能顺利找到它们。

  • 额外小提示
    如果你之前用了临时方案凑合用,现在完全可以替换成上面这种直接指定模块的方式,这就是pytest官方推荐的从已安装包运行测试的正规做法。

内容的提问来源于stack exchange,提问作者Gary van der Merwe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:14:37