get site-packages folder from a python unittest -
i have standard python proj package::
proj/ ├── proj │ ├── data │ │ └── data.csv │ ├── __init__.py │ └── lib.py ├── manifest.in ├── setup.py └── tests ├── __init__.py └── lib_test.py data/data.csv installed manifest.in , include_package_data key in setup.py::
~/proj$ more setup.py setuptools import setup setup(name='proj', version=1.0, packages=['proj'], test_suite = 'tests', include_package_data=true, zip_safe=false) ~/proj$ more manifest.in include proj/data/*.csv so after python setup.py install data.csv in place want in site-packages::
$ tree ~/venv/lib/python2.7/site-packages/proj-1.0-py2.7.egg ~/venv/lib/python2.7/site-packages/proj-1.0-py2.7.egg ├── egg-info │ └── ... └── proj ├── data │ └── data.csv ├── __init__.py └── ... in setup.py, test_suite declared, when call test proj first folder, work well::
~/proj$ python setup.py test running test ... ---------------------------------------------------------------------- ran 1 test in 0.000s ok i use in unitest data.csv file from: ~/venv/lib/python2.7/site-packages/proj-1.0-py2.7.egg/proj/data/data.csv. in short way ~/venv/lib/python2.7/site-packages/proj-1.0-py2.7.egg/proj/data/ folder.
with code::
$ more tests/lib_test.py import unittest, os, proj proj.lib import get_data class testutils(unittest.testcase): def test_get_data(self): datapath = os.path.dirname(os.path.abspath(proj.__file__)) + '/data' data = '{}/data.csv'.format(datapath) print '\n data:', data if __name__ == '__main__': unittest.main() using __file__ succed ~/sandbox/proj/proj/data/data.csv::
$ python setup.py test running test ... test_get_data (tests.lib_test.testutils) ... data: ~/sandbox/proj/proj/data/data.csv ok ---------------------------------------------------------------------- ran 1 test in 0.000s
in fact
python setup.py test does not load python package place python setup install put (~/venv/lib/python2.7/site-packages/proj-xxx), place python setup.py test run.
that's why with:
import proj, os os.path.abspath(proj.__file__) we can't catch site-package folder working-copy files.
Comments
Post a Comment