`py.test` and `__init__.py` files

天大地大妈咪最大 提交于 2019-11-29 13:51:50
Bashwork

Looks like py.test is using py._path.pyimport to open your file. If there is a __init__.py file in the directory, it treats your file as a module, otherwise it opens the file. Long story short, delete the __init__.py or put your tests in another directory outside your project code (<--- good idea).

http://doc.pylib.org/en/latest/_modules/py/_path/local.html#LocalPath.pyimport

I really suggest you to rename the directory to something not called "distutils". Why ? Because you are overriding an existing module. When "import distutils" or "from distutils import *" appear in the script (from another import or your own python file), it will prefer your directory instead the system one. If the module distutils have been already loaded before, your distutils will not be loaded, because the symbol already exists in global().

It would be really simpler to rename that directory (like tests) instead of trying to fight with py.text / python internals.

You can tell pytest to ignore specific files or glob patterns as described here. Put a conftest.py file in the root directory of your project that lists the files you want pytest to ignore:

However, many projects will have a setup.py which they don’t want to be imported. Moreover, there may files only importable by a specific python version. For such cases you can dynamically define files to be ignored by listing them in a conftest.py file:


 # content of conftest.py
 import sys

 collect_ignore = ["setup.py"]

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!