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?
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
).
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.
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/
.
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"
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.
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
.
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