내 장고 프로젝트에 대한 pytest와 셀레늄을 실행하고 고정물 설정/teardown을 실행하려고합니다.pytest.fixture 함수는``yield``를 사용할 수 없습니다. 대신 작성하고 내부 함수/생성기를 반환하고 소비자가 전화를 반복하고 그것을 반복하자. :
나는 yield
를 사용하여 최고의 practice을 따라하려고 노력하지만 오류가 점점 오전 : 그것은 작동하지 않는 이유를
--- ERROR at setup of test_browsing_check ---
pytest.fixture functions cannot use ``yield``. Instead write and return an inner function/generator and let the consumer call and iterate over it.:
@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium .implicitly_wait(3)
yield selenium
selenium.quit()
알고 계십니까? 내가 잘
@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium.implicitly_wait(3)
def teardown():
selenium.quit()
request.addfinalizer(teardown)
return selenium
작동 다른 코드를 사용했다 그러나이 방법은 사용하지 않는 것이 좋습니다 나중에 그런
:이 방법은 아직 완벽하게 지원됩니다
하지만 수익률은 2.10에서 권장 이후 때문에 자연스러운 코드 흐름을보다 간단하고 잘 설명하는 것으로 간주됩니다. 버전에 대한
참고 :
$ python -V
$ Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
$ django-admin version
$ 1.10.3
$ pip show pytest
$ Name: pytest
$ Version: 2.9.2
문서에 따르면 : 버전 2.10 이전에는 yield 문을 사용하여 teardown 코드를 실행하려면 * yield_fixture 마커 *를 사용하여 조명기를 표시해야했습니다. 2.10 이후부터 일반 조명기는 yield를 직접 사용할 수 있으므로 yield_fixture 데코레이터는 더 이상 필요하지 않으며 더 이상 사용되지 않는 것으로 간주됩니다. –
@FrancoSolleza 좋은 답변입니다! 답변을 추가해주세요. 투표를 해 보겠습니다. –
예. 과연. 그것을 테스트하고 작동합니다. 고맙습니다. @DavorCubranic이 (가) –