سؤال

وأنا غير قادر على استخدام الأنف (nosetests) في مشروع virtualenv - لا يمكن أن يبدو للعثور على الحزم المثبتة في بيئة virtualenv

.

والشيء الغريب هو أنني يمكن أن يحدد

test_suite = 'nose.collector'

وفي setup.py وتشغيل الاختبارات على ما يرام كما

python setup.py test

ولكن عند تشغيل nosetests مباشرة، وهناك كل أنواع الأخطاء الاستيراد.

ولقد حاولت ذلك مع كل من التثبيت على مستوى النظام الأنف ومجموعة virtualenv الأنف ولا حظ.

وأي أفكار؟

والشكر !!

هل كانت مفيدة؟

المحلول

هل أنت قادرة على تشغيل myenv/bin/python /usr/bin/nosetests؟ يجب أن تشغيل الأنف باستخدام مجموعة مكتبة بيئة الظاهري.

نصائح أخرى

وتحتاج إلى الحصول على نسخة من الأنف المثبتة في بيئة افتراضية. من أجل إجبار تركيب الأنف إلى virtualenv، على الرغم من أن يتم تثبيته بالفعل في حزم الموقع، العالمية، تشغيل pip install مع العلم -I:

(env1)$ pip install nose -I

ومنذ ذلك الحين يمكنك فقط تشغيل nosetests كالمعتاد.

في نفس الوضع وكنت بحاجة لإعادة تحميل virtualenv للمسار المراد تحديثها بشكل صحيح:

deactivate
env/bin/activate

وحصلت مشكلة مماثلة. ساعد الحل التالي:

python `which nosetests` 

و(بدلا من nosestests فقط)

إليك ما يصلح لي:

$ virtualenv --no-site-packages env1
$ cd env1
$ source bin/activate            # makes "env1" environment active,
                                 # you will notice that the command prompt
                                 # now has the environment name in it.

(env1)$ easy_install nose        # install nose package into "env1"

وأنا خلقت حزمة slither حقا الأساسية التي كانت، في setup.py لها، السمة test_suite نفسها كما ذكرت أعلاه. ثم وضعت مصدر الحزمة تحت env1/src.

إذا نظرت داخل env1/src، كنت انظر:

slither/setup.py
slither/slither/__init__.py
slither/slither/impl.py          # has some very silly code to be tested
slither/slither/tests.py         # has test-cases 

ويمكنني تشغيل الاختبارات باستخدام test subcommand:

(env1)$ pushd src/slither
(env1)$ python setup.py test
# ... output elided ...
test_ctor (slither.tests.SnakeTests) ... ok
test_division_by_zero (slither.tests.SnakeTests) ... ok
Ran 2 tests in 0.009s
OK
(env1)$ popd

وأو، لا أستطيع تشغيل نفس الاختبارات مع nosetests:

(env1)$ pushd src
(env1)$ nosetests slither/
..
Ran 2 tests in 0.007s
OK
(env1)$ popd

ونلاحظ أيضا أن nosetests يمكن أن يكون من الصعب إرضاءه حول التنفيذية. يمكنك تمرير --exe إذا كنت تريد أن تكتشف الاختبارات في وحدات بيثون التي هي للتنفيذ.

إذا فشل كل شيء آخر، حاول تثبيت الأنف في venv الخاص بك، و / أو تشغيل nosetests-2.7. أعتقد الجواب @ اندريا-ZONCA لديه نفس التأثير إذا الثعبان venv الخاص بك هو 2.7

ولعل هذا هو التغيير الذي حدث مؤخرا، ولكن بالنسبة لي، عندما ركبت nosetests من خلال نقطة، وكان هناك nosetests تنفيذ المثبتة في .virtualenvs/<env>/bin، والتي (لا يثير الدهشة) تعمل بشكل صحيح مع virtualenv.

قد يكون لديك nosetests المثبت في مكان آخر في PATH مع أولوية أعلى من تلك المثبتة في virtualenv الخاص بك. وهناك طريقة سريعة لإعطاء وحدة nose وما يرتبط بها النصي nosetests المثبتة في الأولوية virtualenv أعلى الحالية هي لتحرير PATH الخاص بك:

export PATH=/path/to/current/virtualenv/bin:$PATH
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top