从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
相关产品推荐
相关产品推荐

