2017-03-20 1 views
1

저는 최근에 파이썬 프로젝트 작업을 시작했습니다. 이 프로젝트에서 나는 pytest을 사용하여 테스트 케이스를 작성했습니다. 그 점에서 나는 pytest-fixtures을 사용해 보았고 그 기본 개념을 이해했습니다.pytest fixture가 클래스에서 호출되지 않습니다.

그러나 class에서 이러한 조명기를 사용하려고 할 때 특정 경우에 fixture을 사용하는 것이 어려웠습니다.

샘플 코드 :이 테스트를 실행하고 때

import pytest 

from flask.ext.testing import TestCase 

from flask_application import app 

@pytest.fixture(scope="module") 
def some_fix(): 
    return "yes" 

class TestDirectoryInit(TestCase): 
    def create_app(self): 
     return app 

    def test_one(self, some_fix): 
     assert some_fix == "yes" 

, 그것은 나에게 오류 던지고있다 :

:

TypeError: test_one() takes exactly 2 arguments (1 given)

을하지만 조금 같은이 코드를 변경하는 경우

@pytest.fixture(scope="module") 
def some_fix(): 
    return "yes" 

class TestDirectoryInit(): 

    def test_one(self, some_fix): 
     assert some_fix == "yes" 

이제이 테스트 사례가 통과됩니다. TestCase 클래스를 확장하여 왜 다르게 동작하는지 이해할 수 없습니다.

유용한 제안을 보내 주시면 감사하겠습니다. 감사!

답변

3

flask.ext.testing.TestCaseunittest.TestCase의 하위 클래스입니다. 당신은 유닛 테스트와 pytest기구를 사용할 수 있도록하려면

이 읽어 보시기 바랍니다 :

TestDirectoryInit` 클래스`에서

Mixing pytest fixtures into unittest

+0

, 내가 API 호출에 대한 테스트 케이스를 쓰고 있어요. 이를 위해'unittest.TestCase'를 사용하고 있습니다. 'unittest.TestCase'를 사용하지 않고 다른 좋은 방법을 제안 해 주시겠습니까? –

+0

당신은 단지 pytest를 혼자서 사용할 수 있습니다, 그것은 unittest 대체물입니다 –

+0

그 작은 예제 코드를 작성할 수 있습니까? Unittest.Testcase를 가져 와서 self.client.post()와 같은 요청을 할 수있었습니다. 어떻게 우리가 pytest를 사용하여 이것을합니까? –

관련 문제