[python] nosetest가있는 파일에서 단일 테스트를 지정하려면 어떻게합니까?

TestWeb 클래스와 test_something ()과 같은 많은 메서드를 포함하는 test_web.py라는 파일이 있습니다.

클래스의 모든 테스트를 다음과 같이 실행할 수 있습니다.

$ nosetests test_web.py
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...

하지만 개별 테스트를 실행할 수없는 것 같습니다. 동일한 PWD에서 실행할 때 “No such test”오류가 발생합니다.

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout

여기서 무엇이 잘못 되었을까요?



답변

다음과 같이 지정해야합니다. nosetests <file>:<Test_Case>.<test_method>또는

nosetests test_web.py:TestWeb.test_checkout

문서 보기


답변

모듈을 지정할 수도 있습니다.

nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users


답변

다른 답변과 마찬가지로 명령 줄에 이름을 지정하면 효과가 있고 유용합니다. 그러나 테스트를 작성하는 중에 작업중인 테스트 만 실행하고 싶은 경우가 많으며 명령 줄에 작성해야하는 이름이 꽤 길고 작성하기 번거로워집니다. . 이 경우 커스텀 데코레이터와 플래그를 사용하는 것을 선호합니다.

나는 다음과 같이 wipd( “work in progress decorator”)를 정의 합니다 :

from nose.plugins.attrib import attr
def wipd(f):
    return attr('wip')(f)

이것은 장식 @wipd하는 wip객체에 속성을 설정 하는 데코레이터 를 정의합니다 . 예를 들면 :

import unittest
class Test(unittest.TestCase):

    @wipd
    def test_something(self):
        pass

그런 다음 -a wip명령 줄에서으로 표시된 테스트로 테스트 실행 범위를 좁힐 수 있습니다 @wipd.

이름에 대한 참고 사항 …

이런 종류의 문제를 피하기 @wipd보다는 데코레이터 의 이름 을 사용하고 @wip있습니다.

import unittest
class Test(unittest.TestCase):

    from mymodule import wip
    @wip
    def test_something(self):
        pass

    def test_something_else(self):
        pass

importwip장식 멤버 클래스의 , 그리고 모든 클래스의 시험은 선택됩니다. attrib에 의해 생성하고 테스트 선택 속성이 너무 존재하는 경우 시험 방법의 상위 클래스가 볼 수있는 플러그인 검사 및 속성 attrib할 수는 분리 된 공간에 존재하지. 따라서 테스트 -a foo하고 클래스에이 포함되어 있으면 클래스의 foo = "platypus"모든 테스트가 플러그인에 의해 선택됩니다.


답변

여러 특정 테스트를 실행하려면 공백으로 구분하여 명령 줄에 추가하기 만하면됩니다.

nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout


답변

내 테스트에서 모듈 이름으로 지정하는 것이 작동하지 않습니다.

에 대한 실제 경로를 지정해야합니다 .py.

nosetests /path/to/test/file.py:test_function

이것으로 nose==1.3.7


답변

내 요구 사항은 다른 Windows 디렉토리 에있는 테스트 파일에서 단일 테스트를 실행하는 것이 었습니다. 이것은 다음과 같이 anaconda 명령 프롬프트 에서 수행되었습니다 .

다음에서 코 테스트 를 실행 했습니다.

(base) C:\Users\ABC\Documents\work\

그러나 test_MyTestFile.pymethodsFile.py 는 다음과 같습니다.

 (base) C:\Users\ABC\Documents\work\daily\

다음과 같이 따옴표경로포함하여 단일 테스트를 실행하십시오 .

(base) C:\Users\ABC\Documents\work>nosetests "daily\\test_MyTestFile.py:MyTestClass.test_add_integers"

test_MyTestFile.py 는 다음과 같습니다.

import methodsFile
import unittest

class MyTestClass(unittest.TestCase):

    def test_add_integers(self):
        assert methodsFile.add(5, 3) == 8

    def test_add_integers_zero(self):
        assert methodsFile.add(3, 0) == 3

methodsFile.py 는 다음과 같습니다.

def add(num1, num2):
        return num1 + num2


답변