Jak wykonać pojedynczy test z nosem w słupkach

Mam aplikację Pylons 1.0 z kilkoma testami w katalogu test/functional. Dostaję dziwne wyniki badań i chcę wykonać tylko jeden test. Dokumentacja nose mówi, że powinienem być w stanie przejść w nazwie testu w wierszu poleceń, ale dostaję Importer bez względu na to, co robię

Na przykład:

nosetests -x -s sometestname

Daje:

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

I get the same error for

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

Jaka jest prawidłowa składnia?

Author: Nick T, 2010-09-13

6 answers

nosetests appname.tests.functional.test_controller powinno działać, gdzie plik ma nazwę test_controller.py.

Aby uruchomić określoną klasę i metodę testową, użyj ścieżki w postaci module.path:ClassNameInFile.method_name, czyli dwukropka oddzielającego ścieżkę modułu / Pliku od obiektów w pliku. module.path jest względną ścieżką do pliku (np. tests/my_tests.py:ClassNameInFile.method_name).

 236
Author: Antoine Leclair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-28 06:49:13

Dla mnie używając Nosetests 1.3.0 te warianty działają (ale upewnij się, że masz __init__.py w folderze testów):

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

Zauważ, że jeden dwukropek pomiędzy nazwą modułu A nazwą klasy.

 47
Author: Kee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-21 20:09:13

Muszę dodać rozszerzenie pliku". py", czyli

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

Może to dlatego, że nie mam żadnych klas w pliku. Bez .py, nos narzekał:

Nie można znaleźć wywołującego test_func_xy w pliku /path_to/my_file: plik nie jest moduł Pythona

I to chociaż mam __init__.py w folderze /path_to/.

 2
Author: gogo_gorilla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-20 11:33:02

Napisałem ten mały skrypt, bazując na poprzednich odpowiedziach:

#!/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"
 0
Author: tfga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-31 19:52:32

Następujące zadziałało dla mnie po prostu dobrze:

nosetests test_file.py:method_name

Zwróć uwagę, że moje testy nie są na zajęciach. Metody badań były w jednym pliku.

 0
Author: Raptor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-02 14:48:09

W przypadku nosetestów 1.3.7 należy wykonać:

nosetests --tests=tests.test_something.py,tests.test_something_else.py.

 0
Author: Maciej Kozik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-08 13:02:58