py-testing-async
كتابة اختبارات غير متزامنة باستخدام pytest
يتطلب الاختبار غير المتزامن أنماطًا محددة تختلف عن الكود المتزامن. توفر هذه المهارة أنماطًا جاهزة للاستخدام لتكوين pytest-asyncio، والإعدادات الثابتة غير المتزامنة، ومحاكاة الدوال غير المتزامنة، وعزل اختبارات قواعد البيانات.
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「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 الثابت يطابق نطاق اختبارك
- تحقق من أن التخلص من المحرك يحدث في النطاق الصحيح
安全審計
安全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)
⚙️ 外部命令 (35)
品質評分
你能建構什麼
اختبار نقاط نهاية 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 عند استخدام الوضع الصارم
- تشغيل الاختبارات بدون تراجع عن المعاملات مما يسبب تلوث الاختبارات