테스트 / 기능 디렉토리에 많은 테스트가있는 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 appname.tests.functional.test_controller
파일 이름이이면 작동합니다 test_controller.py
.
특정 테스트 클래스와 메소드를 실행하려면 형식의 경로 module.path:ClassNameInFile.method_name
, 즉 모듈 / 파일 경로와 파일 내의 오브젝트를 구분하는 콜론을 사용하십시오. module.path
파일의 상대 경로입니다 (예 🙂 tests/my_tests.py:ClassNameInFile.method_name
.
답변
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
모듈 이름과 클래스 이름 사이에 단일 콜론이 있습니다.
답변
“.py”파일 확장명을 추가해야합니다.
r'/path_to/my_file.py:' + r'test_func_xy'
파일에 클래스가 없기 때문일 수 있습니다. 이 없으면 .py
코가 불평했습니다.
/ path_to / my_file 파일에서 호출 가능한 test_func_xy를 찾을 수 없습니다 : 파일이 파이썬 모듈이 아닙니다
그리고 이것은 __init__.py
폴더에 있지만 /path_to/
.
답변
이전 답변에 따라이 작은 스크립트를 작성했습니다.
#!/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"
답변
다음은 저에게 효과적이었습니다.
nosetests test_file.py:method_name
수업 중이 아닌 곳에서 테스트합니다. 테스트 방법은 단일 파일에있었습니다.