주피터 노트북 내부에서 pytest 테스트 기능
나는 파이썬 테스트 옵션에 대한 프레젠테이션을 하고 있는데, 내가 시연하고 싶은 기술 중 하나는 파이테스트이다. 나는 주피터/이피톤 노트북에서 발표를 할 계획이다. 이상적으로 나는 셀에서 테스트 기능을 정의한 다음 해당 기능을 실행하기 위해 파이테스트를 사용할 수 있기를 원한다. 그렇게 하면 파이테스트의 개별 기능 등을 시연할 수 있다.
이것을 할 수 있는 기존의 방법이 있나요? 내가 파이테스트 API에서 본 상호작용 기능 중 어떤 것도 청구서에 맞지 않는 것 같지만, 나는 확실히 파이테스트 전문가가 아니다. 나는 그것을 하기 위해 플러그인을 기꺼이 쓸 것이므로, 그 방향에 대한 최고의 접근 방식에 대한 어떤 조언도 좋을 것이다.
나는 피테스트-아이핀을 보았지만, 그것은 내가 필요로 하는 것을 하지 않는 것 같다. 만약 그 평가가 틀리면, 그것을 사용하는 방법에 대한 조언도 좋을 것이다.
나는 이 목적을 위해 그것을 만들었고 사용했다.
다음과 같은 도구를 사용합니다:
%%pytest
def test_my_stuff():
assert 42 == 42
안타깝게도 노트북에 정의된 기능과 클래스를 테스트 셀의 기능을 테스트할 수 있는 방법을 찾을 수 없었습니다. 나는 누군가가 그것에 대한 해결책을 제시해주면 감사하겠다.
매우 성숙해 보이는 유사한 모듈이 있습니다:
@akaiola에서 개발한 모듈에 참조되어 보다 활성화되고 정기적으로 업데이트/유지관리됩니다.
특히, 테스트는 노트북 내부에서 테스트를 수행하는 전체 목적인 다른 셀에 정의된 일부 기능을 사용할 수 있습니다(아래 예 참조).
사용 방법:
- 다음의 가져오기 및 구성을 셀에 넣습니다:
import ipytest
ipytest.autoconfig()
- 셀에 몇 가지 테스트 기록
- 테스트가 있는 각 셀에 대해 마법을 사용하여 테스트가 있는 셀을 실행하십시오... 또는 시험 후에 감방에 감방을 넣는다
공식 예제를 확인할 수 있습니다:
아니면 내가 한 예:
그리고 또 다른 예는:
이미 이 문제를 2배로 해결했기 때문에 여기 2센트가 있고 두 번 모두 이 사이트로 돌아온다. 미래의 나를 위해:
다음과 같이 구성된 프로젝트의 경우
prod_folder:
* data
* code
* run_notebook.ipynb
* tests
* test_some_test.py
만약 당신이 다음 셀 매직 내에서 실행하고 싶다면, 내 목적에 맞게 실행할 수 있습니다:
!pytest ../tests
Google Colab에서 나는 일반적으로 다음 절차를 수행합니다:
- 각 셀의 파일 이름을 만듭니다:
다음은 예입니다:
%%file test_list.py
# find the mismatched elements in list `l1` which are not in list `l2`
def solution(l1: list, l2: list) -> list:
return [
e
for e in l1
if e not in [e for e in l2]
]
import pytest
a = [1,2,3]
b = [3,4,None,None]
TEST_CASES = [[a,b]]
class TestCase:
@pytest.mark.parametrize("test_case", TEST_CASES)
def test_events(self, test_case):
assert solution(test_case[0], test_case[1]) == [1,2]
- 다른 셀에서 실행:
!python -m pytest test_list.py
출력:
============================= test session starts ==============================
platform linux -- Python 3.8.16, pytest-3.6.4, py-1.11.0, pluggy-0.7.1
rootdir: /content, inifile:
plugins: typeguard-2.7.1
collected 1 item
test_list.py . [100%]
=========================== 1 passed in 0.02 seconds ===========================
2023년부터 새로워짐
- #(주피터 커널 버전과 함께)
- 이전 주피터 셀에서:
import ipytest
ipytest.autoconfig()
- 셀에서 테스트:
%%ipytest -qq
def test_my_stuff():
assert 42 == 42
def test_my_stuff1():
assert 42 == 41
- 결과:
.F. [100%]
============================================= FAILURES =============================================
__________________________________________ test_my_stuff1 __________________________________________
def test_my_stuff1():
> assert 42 == 41
E assert 42 == 41
/tmp/ipykernel_17418/2873229183.py:5: AssertionError
===================================== short test summary info ======================================
FAILED t_018b5863b93c4104bce0209d0ad789b9.py::test_my_stuff1 - assert 42 == 41
'개발하자' 카테고리의 다른 글
python-rq에 유사한 예약된 작업이 있는지 확인하는 방법은 무엇입니까? (0) | 2023.08.17 |
---|---|
TypeError: _evaluate()는 3개의 위치 인수를 사용하지만 4개는 fastapi에서 제공되었습니다 (0) | 2023.08.17 |
Pycharm Jupyter 노트북 wsl: Jupyter 패키지가 설치되지 않았습니다 (0) | 2023.08.16 |
TypeScript 배열의 마지막 요소 액세스 (0) | 2023.08.15 |
SPARK_HOME 환경 변수가 설정되어 있지만 주피터 노트북에는 표시되지 않습니다. (윈도우) (0) | 2023.08.15 |