testing - كيف أجري اختبارًا واحدًا باستخدام Nose in Pylon




pylons nosetests (3)

لدي تطبيق Pylons 1.0 مع مجموعة من الاختبارات في دليل الاختبار / الوظيفي. أتلقى نتائج اختبار غريبة وأريد فقط إجراء اختبار واحد. يقول توثيق الأنف أنني يجب أن أكون قادرًا على المرور في اسم اختبار في سطر الأوامر ولكني أحصل على ImportErrors بغض النظر عن ما أقوم به

فمثلا:

nosetests -x -s sometestname

يعطي:

Traceback (most recent call last):
  File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/loader.py", line 371, in loadTestsFromName
   module = resolve_name(addr.module)
  File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/util.py", line 334, in resolve_name
   module = __import__('.'.join(parts_copy))
ImportError: No module named sometestname

أحصل على نفس الخطأ ل

nosetests -x -s appname.tests.functional.testcontroller

ما هي الصيغة الصحيحة؟


بالنسبة لي باستخدام Nosetests 1.3.0 تعمل هذه المتغيرات (ولكن تأكد من وجود __init__.py في مجلد الاختبارات):

nosetests [options] tests.ui_tests
nosetests [options] tests/ui_tests.py
nosetests [options] tests.ui_tests:TestUI.test_admin_page

لاحظ أن النقطتين المفردتين بين اسم الوحدة النمطية واسم الفئة.


كتبت هذا السيناريو الصغير ، بناءً على الإجابات السابقة:

#!/usr/bin/env bash

# 
# Usage:
# 
#     ./noseTest <filename> <method_name>
# 
# e.g.:
# 
#     ./noseTest test/MainTest.py mergeAll
#     
# It is assumed that the file and the test class have the _same name_ 
# (e.g. the test class `MainTest` is defined in the file `MainTest.py`).
# If you don't follow this convention, this script won't work for you.
#

testFile="$1"
testMethod="$2"

testClass="$(basename "$testFile" .py)"

nosetests "$testFile:$testClass.test_$testMethod"

يجب إضافة ملحق الملف ".py" ،

r'/path_to/my_file.py:' +  r'test_func_xy'

ربما هذا لأن ليس لدي أي فصول في الملف. بدون .py ، كان يشكو الأنف:

لا يمكن العثور على test_func_xy callable في الملف / path_to / my_file: الملف ليس وحدة python

وهذا على الرغم من أن لدي __init__.py في المجلد /path_to/ .