技能 py-testing-async
🔄

py-testing-async

安全 🌐 網路存取⚙️ 外部命令

كتابة اختبارات غير متزامنة باستخدام pytest

يتطلب الاختبار غير المتزامن أنماطًا محددة تختلف عن الكود المتزامن. توفر هذه المهارة أنماطًا جاهزة للاستخدام لتكوين pytest-asyncio، والإعدادات الثابتة غير المتزامنة، ومحاكاة الدوال غير المتزامنة، وعزل اختبارات قواعد البيانات.

支援: Claude Codex Code(CC)
📊 69 充足
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「py-testing-async」。 كيف أختبر دالة غير متزامنة تستدعي قاعدة بيانات؟

預期結果:

  • استخدم إعدادًا ثابتًا غير متزامن بنطاق جلسة وتراجع تلقائي:
  • أنشئ إعدادًا ثابتًا غير متزامن يعطي الجلسة داخل معاملة
  • يحدث التراجع تلقائيًا عند اكتمال الاختبار
  • ضع علامة على اختبارك بـ @pytest.mark.asyncio
  • استخدم await لاستدعاء دوال قاعدة البيانات غير المتزامنة

正在使用「py-testing-async」。 كيف أحاكي استدعاء عميل HTTP غير متزامن؟

預期結果:

  • استخدم AsyncMock لإنشاء دالة محاكاة غير متزامنة:
  • mock_response = AsyncMock()
  • mock_response.json.return_value = {"data": "test"}
  • mock_client.get.return_value = mock_response
  • أكد أن المحاكاة تم استدعاؤها بالوسائط الصحيحة

正在使用「py-testing-async」。 ما الذي يسبب أخطاء إغلاق حلقة الأحداث في الاختبارات غير المتزامنة؟

預期結果:

  • يحدث هذا عندما يكون للإعدادات الثابتة غير المتزامنة نطاق خاطئ:
  • قد تعيش الإعدادات الثابتة ذات نطاق الجلسة لفترة أطول من حلقة أحداث الاختبار
  • استخدم نطاق الدالة للإعدادات الثابتة التي تحتاج إلى حالة جديدة
  • تأكد من أن إعداد event_loop الثابت يطابق نطاق اختبارك
  • تحقق من أن التخلص من المحرك يحدث في النطاق الصحيح

安全審計

安全
v4 • 1/16/2026

This is a pure documentation skill containing only a SKILL.md markdown file with informational content about Python async testing patterns. No executable code, scripts, network calls, filesystem access, or environment variable access. All static findings are false positives - the scanner misidentified code block backticks as shell execution, 'async' as C2 keywords, and configuration strings as cryptographic patterns.

2
已掃描檔案
582
分析行數
2
發現項
4
審計總數
審計者: claude 查看審計歷史 →

品質評分

38
架構
100
可維護性
87
內容
19
社群
100
安全
91
規範符合性

你能建構什麼

اختبار نقاط نهاية API غير المتزامنة

كتابة اختبارات التكامل لنقاط نهاية FastAPI أو Flask غير المتزامنة باستخدام httpx AsyncClient و ASGITransport.

محاكاة استدعاءات الخدمات غير المتزامنة

استبدال استدعاءات قواعد البيانات غير المتزامنة واستدعاءات الخدمات الخارجية بـ AsyncMock لإجراء اختبارات وحدة سريعة ومعزولة.

اختبار عمليات قواعد البيانات

إنشاء اختبارات معزولة لعمليات قواعد البيانات غير المتزامنة مع التراجع المناسب عن المعاملات بين الاختبارات.

試試這些提示

إعداد اختبار غير متزامن أساسي
أرني كيفية تكوين pytest للاختبار غير المتزامن باستخدام pytest-asyncio. ضمّن الوضع الصارم والوضع التلقائي.
محاكاة دالة غير متزامنة
كيف أحاكي دالة غير متزامنة تستدعي API خارجي؟ أرني كيفية استخدام AsyncMock و patch.
عزل اختبار قاعدة البيانات
أرني كيفية إنشاء إعداد ثابت غير متزامن يتراجع عن تغييرات قاعدة البيانات بعد كل اختبار لمنع التلوث.
أنماط اختبار متقدمة
اكتب اختبارًا يغطي تدفقًا غير متزامن متعدد الخطوات بما في ذلك إنشاء مورد وتنفيذ إجراءات والتحقق من الحالة النهائية.

最佳實務

  • استخدم asyncio_mode = "strict" و @pytest.mark.asyncio لنية اختبار صريحة
  • أنشئ إعدادات ثابتة غير متزامنة تعطي الجلسة داخل معاملة للتراجع التلقائي
  • استخدم AsyncMock بدلاً من Mock عند اختبار الدوال غير المتزامنة

避免

  • استخدام Mock العادي بدلاً من AsyncMock للدوال غير المتزامنة
  • نسيان @pytest.mark.asyncio عند استخدام الوضع الصارم
  • تشغيل الاختبارات بدون تراجع عن المعاملات مما يسبب تلوث الاختبارات

常見問題

ما الوضع الذي يجب أن أستخدمه في pytest-asyncio؟
استخدم الوضع الصارم مع @pytest.mark.asyncio لنية صريحة. الوضع التلقائي يشغل جميع الاختبارات غير المتزامنة لكن يمكن أن يخفي العلامات المفقودة.
كيف أختبر عمليات قاعدة البيانات غير المتزامنة؟
أنشئ إعدادًا ثابتًا غير متزامن يوفر AsyncSession. استخدم التراجع عن المعاملات لعزل الاختبارات.
هل يمكنني اختبار نقاط نهاية FastAPI بهذه المهارة؟
نعم. استخدم httpx AsyncClient مع ASGITransport لإجراء طلبات غير متزامنة لتطبيق FastAPI الخاص بك أثناء الاختبارات.
كيف أحاكي دالة غير متزامنة؟
استخدم AsyncMock() لإنشاء كائنات محاكاة و patch() لاستبدال الدالة غير المتزامنة الأصلية في اختباراتك.
ما الذي يسبب أخطاء coroutine was never awaited؟
يعني هذا الخطأ أنك نسيت await لاستدعاء غير متزامن. تحقق من أن جميع الدوال غير المتزامنة يتم استدعاؤها بـ await في اختباراتك.
كيف أمنع الاختبارات من تلويث بعضها البعض؟
استخدم التراجع عن المعاملات في إعدادك الثابت غير المتزامن. لف كل اختبار في معاملة وتراجع بعد الاكتمال.

開發者詳情

檔案結構

📄 SKILL.md