{"id":21457814,"url":"https://github.com/themusharraf/testing-fastapi","last_synced_at":"2025-03-17T04:10:55.816Z","repository":{"id":263172861,"uuid":"889579255","full_name":"themusharraf/testing-fastapi","owner":"themusharraf","description":"Unit and Integration tests for Apis","archived":false,"fork":false,"pushed_at":"2024-11-17T10:26:24.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T13:33:49.430Z","etag":null,"topics":["api","fastapi","integration-testing","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/themusharraf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-16T17:29:03.000Z","updated_at":"2024-11-17T10:26:27.000Z","dependencies_parsed_at":"2024-11-16T18:36:06.578Z","dependency_job_id":null,"html_url":"https://github.com/themusharraf/testing-fastapi","commit_stats":null,"previous_names":["themusharraf/testing-fastapi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Ftesting-fastapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Ftesting-fastapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Ftesting-fastapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Ftesting-fastapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themusharraf","download_url":"https://codeload.github.com/themusharraf/testing-fastapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243971193,"owners_count":20376784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","fastapi","integration-testing","unit-testing"],"created_at":"2024-11-23T06:07:11.812Z","updated_at":"2025-03-17T04:10:55.795Z","avatar_url":"https://github.com/themusharraf.png","language":"Python","readme":"# 🚀 FastAPI Foydalanuvchi Boshqaruvi API - Unit va Integration Testlar\n\nUshbu loyiha **FastAPI** asosida foydalanuvchilarni boshqarish API uchun mo'ljallangan. Loyiha ichida foydalanuvchilarni qo'shish va olish funksiyalari mavjud bo'lib, ularga **Unit test** va **Integration testlar** orqali sinovlar yozilgan.\n\n---\n\n## 📋 Xususiyatlar\n\n- **Foydalanuvchi qo'shish** (POST so'rovi)\n- **Foydalanuvchini olish** (GET so'rovi)\n- **Unit testlar**: Foydalanuvchi yaratish va olishning asosiy logikasini izolyatsiyalangan holda sinash.\n- **Integration testlar**: API endpointlarining to'g'ri ishlashini sinash.\n\n---\n\n## 🛠 O'rnatish\n\n1. Zarur kutubxonalarni o'rnatish:\n   ```bash\n   pip install fastapi uvicorn pydantic pytest\n   ```\n2. ▶️ Ilovani Ishga Tushirish\n   ```bash\n   uvicorn main:app --reload\n   ```\n   Odatiy holda server http://127.0.0.1:8000/docs manzilida ishga tushadi.\n\n3. 🔧 Testlarni Ishga Tushirish\n   Testlarni ishga tushirish uchun quyidagilarni bajaring:\n   Unit va Integration testlarni bajarish:\n   ```bash\n   pytest\n   ```\nTest natijalarini ko'rib chiqing. Hammasi muvaffaqiyatli o'tishi kerak.\n\n## 🧪 Testlar Tafsiloti\n\n### Integration Testlar\nIntegration testlar API endpointlarning ishlashini sinaydi. Quyidagi kod test_create_user_and_get funksiyasida API endpointlar orqali foydalanuvchini yaratish va olishni sinovdan o'tkazadi:\n```python\ndef test_create_user_and_get():\n    # Yangi foydalanuvchi qo'shish\n    resp = client.post('/user/', json={\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"})\n    assert resp.status_code == 200\n    assert resp.json() == {\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"}\n\n    # Foydalanuvchini olish\n    resp = client.get('/user/4')\n    assert resp.status_code == 200\n    assert resp.json() == {\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"}\n\n    # Takroran bir xil foydalanuvchini qo'shishga urinish\n    resp = client.post('/user/', json={\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"})\n    assert resp.status_code == 400\n    assert resp.json() == {\"detail\": \"User already exists\"}\n\n    # Mavjud bo'lmagan foydalanuvchini olish\n    resp = client.get('/user/5')\n    assert resp.status_code == 404\n    assert resp.json() == {\"detail\": \"User not found\"}\n```\n### Unit Testlar\nUnit testlar kodning logikasini izolyatsiyalangan holda sinash uchun yozilgan. Quyidagi testlar foydalanuvchini yaratish (create_user) va olish (get_user) funksiyalarini sinaydi.\nFoydalanuvchi yaratish testi\n```python\ndef test_create_user():\n    # Yangi foydalanuvchi qo'shish\n    user = create_user(4, \"Bekzod\", \"bekzod\", \"bekzod@gmail.com\")\n    assert user == {\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"}\n    assert users[4] == user\n\n    # Takroriy foydalanuvchini qo'shishga urinish\n    with pytest.raises(ValueError, match=\"User already exists\"):\n        create_user(4, \"Bekzod\", \"bekzod\", \"bekzod@gmail.com\")\n```\nFoydalanuvchini olish testi\n```python\ndef test_get_user():\n    # Test uchun foydalanuvchi qo'shish\n    users[4] = {\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"}\n\n    # Foydalanuvchini olish\n    user = get_user(4)\n    assert user == {\"id\": 4, \"name\": \"Bekzod\", \"username\": \"bekzod\", \"email\": \"bekzod@gmail.com\"}\n\n    # Mavjud bo'lmagan foydalanuvchini olishga urinish\n    with pytest.raises(ValueError, match=\"User not found\"):\n        get_user(5)\n```\n## 📚 Qo‘shimcha Ma'lumotlar\n- FastAPI hujjatlari: https://fastapi.tiangolo.com/\n- Pytest hujjatlari: https://docs.pytest.org/\n- Pydantic hujjatlari: https://pydantic-docs.helpmanual.io/\n\n## 🌟 Hissa Qo‘shish\nLoyihani fork qilib, yaxshilanishlar kiriting va pull request yuboring. Sizning hissangiz qadrlanadi! 😊\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusharraf%2Ftesting-fastapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemusharraf%2Ftesting-fastapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusharraf%2Ftesting-fastapi/lists"}