اختبار نصوص Bash باستخدام Bats
اكتب اختبارات مؤتمتة لنصوص shell باستخدام إطار الاختبار Bats لاكتشاف حالات التراجع قبل وصولها إلى بيئة الإنتاج.
اختبار نصوص Bash باستخدام Bats درس مجاني في Linux Command Line & Bash Scripting Mastery على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Command Line & Bash Scripting Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
لماذا نختبر نصوص الصدفة؟
تفشل النصوص التي تعمل دون مراقبة، مثل cron وCI، بصمت. تتحقق الاختبارات الآلية من السلوك حتى لا تؤدي التغييرات إلى كسر الشفرة العاملة.
مقدمة إلى Bats
إن Bats (Bash Automated Testing System) إطار عمل متوافق مع TAP لاختبار شفرة الصدفة. والاختبارات نفسها عبارة عن ملفات Bash.
# Install on Debian/Ubuntu
sudo apt-get install batsبنية ملف الاختبار
ينتهي ملف Bats بالامتداد .bats، ويعرّف الاختبارات باستخدام الكلمة المفتاحية @test ووصف.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}تشغيل الاختبارات
شغّل ملفًا أو مجلدًا كاملًا باستخدام الأمر bats. ينجح الاختبار عندما ينتهي كل أمر داخله بالحالة 0.
bats test/
bats math.batsالمساعد run
ينفّذ الأمر run أمرًا ويلتقط رمز خروجه في $status ومخرجاته في $output دون إيقاف الاختبار.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}التحقق من المخرجات
قارن $output بالنص المتوقع. ويمكنك أيضًا فهرسة أسطر محددة باستخدام ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}اختبار حالات الفشل
تتحقق الاختبارات الجيدة من مسارات الأخطاء أيضًا. أكّد أن قيمة $status غير صفرية عندما يُفترض أن يفشل الأمر.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}الإعداد والتنظيف
عرّف الدالتين setup() وteardown() اللتين تعملان قبل كل اختبار وبعده لتجهيز ملفات الاختبار المؤقتة وتنظيفها.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}تحميل الشفرة قيد الاختبار
لاختبار الدوال، حمّل نصك البرمجي حتى تصبح دواله متاحة، ثم استدعها مباشرة داخل الاختبارات.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}تخطي الاختبارات والاختبارات المؤجلة
استخدم skip لوضع علامة على اختبار لم يُنفّذ بعد أو غير مدعوم على المنصة الحالية، مع إمكانية تحديد سبب.
@test "windows-only feature" {
skip "not supported on Linux"
}التكامل مع CI
نظرًا إلى أن bats يعيد رمز خروج غير صفري عند الفشل، فإنه يتكامل مباشرة مع مسارات CI كحاجز قبل النشر.
# CI step
bats --tap test/ || exit 1تحقّق سريع
اختبر معرفتك بـ Bats.
مراجعة
يمكنك الآن اختبار Bash باستخدام Bats:
- عرّف الاختبارات باستخدام
@test؛ ويعني النجاح انتهاء كل الأوامر بالحالة 0 - استخدم
runلالتقاط$statusو$output - جهّز ملفات الاختبار المؤقتة باستخدام
setup/teardown - حمّل النصوص البرمجية لاختبار الدوال، واجعل نتائجها بوابة لمسار CI
الأسئلة الشائعة
هل درس «اختبار نصوص Bash باستخدام Bats» مجاني؟
نعم — نص درس «اختبار نصوص Bash باستخدام Bats» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Command Line & Bash Scripting Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
ماذا ستتعلم في «اختبار نصوص Bash باستخدام Bats»؟
اكتب اختبارات مؤتمتة لنصوص shell باستخدام إطار الاختبار Bats لاكتشاف حالات التراجع قبل وصولها إلى بيئة الإنتاج. تتمرن على Linux Command Line & Bash Scripting Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Linux Command Line & Bash Scripting Mastery؟
لا تُشترط خبرة سابقة. Linux Command Line & Bash Scripting Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «اختبار نصوص Bash باستخدام Bats»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Linux Command Line & Bash Scripting Mastery هذا؟
نعم. كل درس في Linux Command Line & Bash Scripting Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تصحيح أخطاء Bash Scripts (set -x، trap)
- معالجة الأخطاء وحالة الخروج
- أفضل ممارسات كتابة Scripts والفحص البرمجي
- اختبار نصوص Bash باستخدام Bats