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

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -