조명기에서 여러 테스트/테스트 클래스로 값을 반환 할 수 있기를 원하지만 전달 된 값은 함수입니다.pytest fixture는 항상 함수를 반환합니다.
=================================== FAILURES ===================================
_____________________________ TestThings.test_user _____________________________
self = <tests.test_again.TestThings instance at 0x10aed6998>
def test_user(self):
> assert user_setup['name'] == 'chad'
E TypeError: 'function' object has no attribute '__getitem__'
tests/test_again.py:14: TypeError
=========================== 1 failed in 0.02 seconds ===========================
그러나이 usefixtures
장식을 사용하지 않도록 내 테스트를 다시 작성하는 경우, 그것은 예상대로 작동 :
import pytest
@pytest.fixture()
def user_setup():
user = {
'name': 'chad',
'id': 1
}
return user
@pytest.mark.usefixtures('user_setup')
class TestThings:
def test_user(self):
assert user_setup['name'] == 'chad'
출력은 다음과 같습니다
여기 내 코드입니다def test_user(user_setup):
assert user_setup['name'] == 'chad'
데코레이터 메서드를 사용하려고 할 때 작동하지 않는 이유는 무엇입니까?
어떻게 작동하는지 명확히 설명해 주셔서 감사합니다. 내 테스트 클래스에있는 각 테스트 함수에 인수를 추가하지 않고도이 작업을 수행 할 수 있다고 생각했습니다. – Cass
나는이 두 변종의 차이점 및/또는 유스 케이스를 찾고 있었는데,이 두 가지 변종을 언제 사용하는지,이 설명에 감사드립니다. – Zelphir
공식 문서에 따르면'@ pytest.mark.usefixtures'로 장식 된 클래스로 그룹화 될 때 각 테스트 함수에'user_setup '을 추가해서는 안됩니다 : "usefixtures 마커로 인해, 각 테스트 메소드의 실행에 cleandir fixture가 필요합니다. 각 메소드에 "cleandir"함수 인수를 지정한 것과 같습니다. "(출처 : http://pytest.org/latest/fixture.html#using-fixtures -from-classes-modules-or-projects) 결국, 이런 그룹화 테스트의 전체 요점은 일괄 처리로 그룹화하는 것입니다.) ... 아마도 이것은 pytest 버그입니까? – Zearin