Skip to content

Commit 308aeea

Browse files
authored
Merge pull request #30 from jkawamoto/vcr
Use pytest-recording to handle 429 errors during tests
2 parents 7b0a5f3 + 83afe1c commit 308aeea

File tree

3 files changed

+425
-5
lines changed

3 files changed

+425
-5
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ dev = [
4040
"pre-commit-uv>=4.1.4",
4141
"pytest>=8.3.5",
4242
"pytest-mock>=3.14",
43+
"pytest-recording>=0.13.4",
4344
"types-requests>=2.32.0.20250306",
4445
]
4546

tests/test_mcp.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ async def test_list_tools(mcp_client_session: ClientSession) -> None:
4141

4242

4343
@pytest.mark.skipif(os.getenv("CI") == "true", reason="Skipping this test on CI")
44+
@pytest.mark.default_cassette("LPZh9BOjkQs.yaml")
45+
@pytest.mark.vcr
4446
@pytest.mark.anyio
4547
async def test_get_transcript(mcp_client_session: ClientSession) -> None:
4648
video_id = "LPZh9BOjkQs"
@@ -52,7 +54,7 @@ async def test_get_transcript(mcp_client_session: ClientSession) -> None:
5254

5355
res = await mcp_client_session.call_tool(
5456
"get_transcript",
55-
arguments={"url": f"https//www.youtube.com/watch?v={video_id}"},
57+
arguments={"url": f"https://www.youtube.com/watch?v={video_id}"},
5658
)
5759
assert isinstance(res.content[0], TextContent)
5860

@@ -62,6 +64,8 @@ async def test_get_transcript(mcp_client_session: ClientSession) -> None:
6264

6365

6466
@pytest.mark.skipif(os.getenv("CI") == "true", reason="Skipping this test on CI")
67+
@pytest.mark.default_cassette("WjAXZkQSE2U.yaml")
68+
@pytest.mark.vcr
6569
@pytest.mark.anyio
6670
async def test_get_transcript_with_language(mcp_client_session: ClientSession) -> None:
6771
video_id = "WjAXZkQSE2U"
@@ -73,7 +77,7 @@ async def test_get_transcript_with_language(mcp_client_session: ClientSession) -
7377

7478
res = await mcp_client_session.call_tool(
7579
"get_transcript",
76-
arguments={"url": f"https//www.youtube.com/watch?v={video_id}", "lang": "ja"},
80+
arguments={"url": f"https://www.youtube.com/watch?v={video_id}", "lang": "ja"},
7781
)
7882
assert isinstance(res.content[0], TextContent)
7983

@@ -83,6 +87,8 @@ async def test_get_transcript_with_language(mcp_client_session: ClientSession) -
8387

8488

8589
@pytest.mark.skipif(os.getenv("CI") == "true", reason="Skipping this test on CI")
90+
@pytest.mark.default_cassette("LPZh9BOjkQs.yaml")
91+
@pytest.mark.vcr
8692
@pytest.mark.anyio
8793
async def test_get_transcript_fallback_language(
8894
mcp_client_session: ClientSession,
@@ -97,7 +103,7 @@ async def test_get_transcript_fallback_language(
97103
res = await mcp_client_session.call_tool(
98104
"get_transcript",
99105
arguments={
100-
"url": f"https//www.youtube.com/watch?v={video_id}",
106+
"url": f"https://www.youtube.com/watch?v={video_id}",
101107
"lang": "unknown",
102108
},
103109
)
@@ -111,19 +117,23 @@ async def test_get_transcript_fallback_language(
111117
@pytest.mark.anyio
112118
async def test_get_transcript_invalid_url(mcp_client_session: ClientSession) -> None:
113119
res = await mcp_client_session.call_tool(
114-
"get_transcript", arguments={"url": "https//www.youtube.com/watch?vv=abcdefg"}
120+
"get_transcript", arguments={"url": "https://www.youtube.com/watch?vv=abcdefg"}
115121
)
116122
assert res.isError
117123

118124

119125
@pytest.mark.skipif(os.getenv("CI") == "true", reason="Skipping this test on CI")
126+
@pytest.mark.default_cassette("error.yaml")
127+
@pytest.mark.vcr
120128
@pytest.mark.anyio
121129
async def test_get_transcript_not_found(mcp_client_session: ClientSession) -> None:
122-
res = await mcp_client_session.call_tool("get_transcript", arguments={"url": "https//www.youtube.com/watch?v=a"})
130+
res = await mcp_client_session.call_tool("get_transcript", arguments={"url": "https://www.youtube.com/watch?v=a"})
123131
assert res.isError
124132

125133

126134
@pytest.mark.skipif(os.getenv("CI") == "true", reason="Skipping this test on CI")
135+
@pytest.mark.default_cassette("LPZh9BOjkQs.yaml")
136+
@pytest.mark.vcr
127137
@pytest.mark.anyio
128138
async def test_get_transcript_with_short_url(mcp_client_session: ClientSession) -> None:
129139
video_id = "LPZh9BOjkQs"

0 commit comments

Comments
 (0)