Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit96aa859

Browse files
committed
Addition of FastAPI example code
1 parente9bccc8 commit96aa859

File tree

4 files changed

+156
-0
lines changed

4 files changed

+156
-0
lines changed

‎tests/fastAPI/app/main.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
importos
2+
importssl
3+
importcertifi
4+
importaiohttp
5+
fromfastapiimportFastAPI,HTTPException
6+
fromdotenvimportload_dotenv
7+
8+
load_dotenv()
9+
10+
user_name=os.getenv('LT_USERNAME')
11+
api_key=os.getenv('LT_ACCESS_KEY')
12+
13+
14+
app=FastAPI()
15+
16+
asyncdefget_lambdatest_all_builds(session):
17+
url=f"https://{user_name}:{api_key}@api.lambdatest.com/automation/api/v1/builds?limit=50"
18+
headers= {"accept":"application/json"}
19+
asyncwithsession.get(url,headers=headers)asresponse:
20+
ifresponse.status==200:
21+
builds_data=awaitresponse.json()
22+
print(builds_data)
23+
returnbuilds_data
24+
else:
25+
raiseHTTPException(status_code=response.status,detail=awaitresponse.text())
26+
27+
asyncdefget_lambdatest_all_sessions(session):
28+
url=f"https://{user_name}:{api_key}@api.lambdatest.com/automation/api/v1/sessions"
29+
headers= {"accept":"application/json"}
30+
asyncwithsession.get(url,headers=headers)asresponse:
31+
ifresponse.status==200:
32+
sessions_data=awaitresponse.json()
33+
print(sessions_data)
34+
returnsessions_data
35+
else:
36+
raiseHTTPException(status_code=response.status,detail=awaitresponse.text())
37+
38+
@app.get("/builds/")
39+
asyncdeffetch_builds():
40+
asyncwithaiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl.create_default_context(cafile=certifi.where())))assession:
41+
builds_data=awaitget_lambdatest_all_builds(session)
42+
dashboard_urls= [build['dashboard_url']forbuildinbuilds_data.get('data', [])]
43+
return {"dashboard_urls":dashboard_urls}
44+
45+
@app.get("/sessions/")
46+
asyncdeffetch_sessions():
47+
asyncwithaiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl.create_default_context(cafile=certifi.where())))assession:
48+
sessions_data=awaitget_lambdatest_all_sessions(session)
49+
session_names= [session['build_name']forsessioninsessions_data.get('data', [])]
50+
return {"session_names":session_names}
51+
52+
if__name__=="__main__":
53+
importuvicorn
54+
uvicorn.run(app,host="0.0.0.0",port=8000)

‎tests/fastAPI/app/test_main.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
importpytest
2+
importaiohttp
3+
fromfastapi.testclientimportTestClient
4+
fromtests.fastAPI.mainimportapp
5+
6+
client=TestClient(app)
7+
8+
@pytest.mark.asyncio
9+
asyncdeftest_fetch_builds():
10+
asyncwithaiohttp.ClientSession()assession:
11+
response=client.get("/builds/")
12+
assertresponse.status_code==200
13+
data=response.json()
14+
assert"dashboard_urls"indata
15+
assertisinstance(data["dashboard_urls"],list)
16+
17+
@pytest.mark.asyncio
18+
asyncdeftest_fetch_sessions():
19+
asyncwithaiohttp.ClientSession()assession:
20+
response=client.get("/sessions/")
21+
assertresponse.status_code==200
22+
data=response.json()
23+
assert"session_names"indata
24+
assertisinstance(data["session_names"],list)

‎tests/fastAPI/main.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
importos
2+
importssl
3+
importcertifi
4+
importaiohttp
5+
fromfastapiimportFastAPI,HTTPException
6+
fromdotenvimportload_dotenv
7+
8+
load_dotenv()
9+
10+
user_name=os.getenv('LT_USERNAME')
11+
api_key=os.getenv('LT_ACCESS_KEY')
12+
13+
app=FastAPI()
14+
15+
asyncdefget_lambdatest_all_builds(session):
16+
url=f"https://{user_name}:{api_key}@api.lambdatest.com/automation/api/v1/builds?limit=2000"
17+
headers= {"accept":"application/json"}
18+
asyncwithsession.get(url,headers=headers)asresponse:
19+
ifresponse.status==200:
20+
builds_data=awaitresponse.json()
21+
# print(builds_data)
22+
returnbuilds_data
23+
else:
24+
raiseHTTPException(status_code=response.status,detail=awaitresponse.text())
25+
26+
asyncdefget_lambdatest_all_sessions(session):
27+
url=f"https://{user_name}:{api_key}@api.lambdatest.com/automation/api/v1/sessions"
28+
headers= {"accept":"application/json"}
29+
asyncwithsession.get(url,headers=headers)asresponse:
30+
ifresponse.status==200:
31+
sessions_data=awaitresponse.json()
32+
# print(builds_data)
33+
returnsessions_data
34+
else:
35+
raiseHTTPException(status_code=response.status,detail=awaitresponse.text())
36+
37+
@app.get("/builds/")
38+
asyncdeffetch_builds():
39+
asyncwithaiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl.create_default_context(cafile=certifi.where())))assession:
40+
builds_data=awaitget_lambdatest_all_builds(session)
41+
dashboard_urls= [build['dashboard_url']forbuildinbuilds_data.get('data', [])]
42+
return {"dashboard_urls":dashboard_urls}
43+
44+
@app.get("/sessions/")
45+
asyncdeffetch_sessions():
46+
asyncwithaiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl.create_default_context(cafile=certifi.where())))assession:
47+
sessions_data=awaitget_lambdatest_all_sessions(session)
48+
session_names= [session['build_name']forsessioninsessions_data.get('data', [])]
49+
return {"session_names":session_names}
50+
51+
if__name__=="__main__":
52+
importuvicorn
53+
uvicorn.run(app,host="0.0.0.0",port=8000)

‎tests/fastAPI/test_main.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
importpytest
2+
importaiohttp
3+
fromfastapi.testclientimportTestClient
4+
fromtests.fastAPI.mainimportapp
5+
# from tests.FastAPI.main import app
6+
7+
client=TestClient(app)
8+
9+
@pytest.mark.asyncio
10+
asyncdeftest_fetch_builds():
11+
asyncwithaiohttp.ClientSession()assession:
12+
response=client.get("/builds/")
13+
assertresponse.status_code==200
14+
data=response.json()
15+
assert"dashboard_urls"indata
16+
assertisinstance(data["dashboard_urls"],list)
17+
18+
@pytest.mark.asyncio
19+
asyncdeftest_fetch_sessions():
20+
asyncwithaiohttp.ClientSession()assession:
21+
response=client.get("/sessions/")
22+
assertresponse.status_code==200
23+
data=response.json()
24+
assert"session_names"indata
25+
assertisinstance(data["session_names"],list)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp