الإنجليزيةالفرنسيةالإسبانية

OnWorks فافيكون

nosetests-2.7 - عبر الإنترنت في السحابة

قم بتشغيل nosetests-2.7 في مزود الاستضافة المجانية OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر nosetests-2.7 الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


nosetests - أفضل اختبار لبايثون

لطيف اختبارات الدخول لأي PYTHON


موجز
اختبارات nosetests [خيارات] [أسماء]

الوصف
يقوم الأنف بجمع الاختبارات تلقائيًا من ملفات مصدر Python والأدلة والحزم الموجودة
في دليل العمل الخاص به (والذي يتم تعيينه افتراضيًا على دليل العمل الحالي). أي ثعبان
الملف المصدر أو الدليل أو الحزمة التي تطابق التعبير العادي testMatch (بواسطة
الافتراضي: (؟: ^ | [b _.-]) [Tt] est) سيتم جمعها كاختبار (أو مصدر لجمع
الاختبارات). بالإضافة إلى ذلك ، سيتم فحص جميع الحزم الأخرى الموجودة في دليل العمل
لملفات مصدر python أو أدلة تطابق testMatch. اكتشاف الحزمة ينخفض
على طول الشجرة ، لذا قم بحزم الاختبارات و package.sub.tests و
package.sub.sub2.tests سيتم جمعها كلها.

ضمن دليل أو حزمة اختبار ، سيكون أي ملف مصدر بيثون يطابق testMatch
فحص لحالات الاختبار. ضمن وحدة الاختبار ، الوظائف والفئات التي تتطابق أسماؤها
سيتم تحميل الفئات الفرعية testMatch و TestCase بأي اسم وتنفيذها كاختبارات.
قد تستخدم الاختبارات الكلمة الأساسية للتأكيد أو تزيد من أخطاء AssertionErrors للإشارة إلى فشل الاختبار.
قد تفعل الفئات الفرعية TestCase نفس الشيء أو تستخدم طرق TestCase المختلفة المتاحة.

It is أهمية إلى لاحظ أن هيه الافتراضي سلوك of أنف is إلى ليس تتضمن اختبارات تبدأ من
ملفات التي . تنفيذ. لتضمين اختبارات من هذه الملفات ، قم بإزالة البت القابل للتنفيذ
أو استخدم علامة - exe (راجع قسم "الخيارات" أدناه).

اختيار اختبارات
لتحديد الاختبارات المراد إجراؤها ، اجتياز أسماء الاختبار في سطر الأوامر:

notests Only_test_this.py

قد تكون أسماء الاختبار المحددة عبارة عن أسماء ملفات أو وحدة ، وقد تشير اختياريًا إلى الاختبار
حالة للتشغيل عن طريق فصل اسم الوحدة النمطية أو الملف عن اسم حالة الاختبار بنقطتين.
قد تكون أسماء الملفات نسبية أو مطلقة. أمثلة:

اختبار اختبار الأنف
nosetests another.test: TestCase.test_method
nosetests a.test: TestCase
Nosetests /path/to/test/file.py:test_function

يمكنك أيضًا تغيير دليل العمل حيث يبحث الأنف عن الاختبارات باستخدام -w
التبديل:

nosetests -w / path / to / الاختبارات

لاحظ ، مع ذلك ، أن دعم الوسائط المتعددة -w أصبح الآن مهملاً وسيظل كذلك
تمت إزالته في إصدار مستقبلي. اعتبارًا من أنف 0.10 ، يمكنك الحصول على نفس السلوك بتحديد
الدلائل الهدف بدون مفتاح w:

nosetests / المسار / إلى / الاختبارات / آخر / المسار / إلى / الاختبارات

مزيد من التخصيص لاختيار الاختبار والتحميل ممكن من خلال استخدام
الإضافات.

مخرجات نتيجة الاختبار مماثلة لتلك الخاصة بـ unittest ، باستثناء الميزات الإضافية
(فئات الأخطاء والميزات التي يوفرها البرنامج المساعد مثل التقاط الإخراج والتأكيد
الاستبطان) بالتفصيل في الخيارات أدناه.

الاعداد
بالإضافة إلى تمرير خيارات سطر الأوامر ، يمكنك أيضًا وضع خيارات التكوين في
مشروعك setup.cfg ملف أو ملف .noserc أو nose.cfg في دليل منزلك. في
أيًا من ملفات تكوين ini القياسية هذه ، فأنت تضع تكوين اختبار nosetests في ملف
[اختبارات nosetests] قسم. الخيارات هي نفسها الموجودة في سطر الأوامر مع البادئة -
إزالة. بالنسبة للخيارات التي تعتبر رموز تبديل بسيطة ، يجب عليك توفير قيمة:

[اختبارات nosetests]
الإسهاب = 3
مع دكتست = 1

سيتم تحميل جميع ملفات التكوين التي تم العثور عليها وجمع خياراتها. أنت تستطيع
تجاوز تحميل ملف التكوين القياسي بامتداد -c الخيار.

باستخدام الإضافات
هناك العديد من ملحقات الأنف المتاحة عبر easy_install وفي أي مكان آخر. لاستخدام البرنامج المساعد ،
فقط قم بتثبيته. سيضيف المكون الإضافي خيارات سطر الأوامر إلى اختبارات nosetests. للتحقق من أن
تم تثبيت البرنامج المساعد ، قم بتشغيل:

اختبارات الأنف - المقابس

يمكنك إضافة -v أو -vv إلى هذا الأمر لإظهار مزيد من المعلومات حول كل مكون إضافي.

إذا كنت تقوم بتشغيل nose.main () أو nose.run () من برنامج نصي ، فيمكنك تحديد قائمة بـ
المكونات الإضافية لاستخدامها عن طريق تمرير قائمة المكونات الإضافية مع وسيطة الكلمات الأساسية للإضافات.

0.9 الإضافات
يمكن أن يستخدم الأنف 1.0 بعض الإضافات التي تمت كتابتها لأنف 0.9. مدير البرنامج المساعد الافتراضي
يُدرج غلاف توافق حول 0.9 ملحقًا يتكيف مع واجهة برمجة تطبيقات البرنامج المساعد التي تم تغييرها
المكالمات. ومع ذلك ، من المحتمل أن تفشل المكونات الإضافية التي تصل إلى الأجزاء الداخلية للأنف ، خاصة إذا كانت كذلك
محاولة الوصول إلى فئات الاختبار أو مجموعات الاختبار. على سبيل المثال ، الإضافات التي تحاول
تحديد ما إذا كان الاختبار الذي تم اجتيازه لبدء الاختبار هو اختبار فردي أم أن مجموعة ما ستفشل جزئيًا
لأنه لم يعد يتم تمرير الأجنحة لبدء الاختبار وجزئيًا لأنه من المحتمل أن يكون
يحاول المكون الإضافي معرفة ما إذا كان الاختبار عبارة عن مثيل لفئة لم تعد موجودة.

0.10 0.11 الإضافات
يجب أن تعمل جميع الإضافات المكتوبة للأنف 0.10 و 0.11 مع الأنف 1.0.

مزيد من الخيارات
-الخامس، --الإصدار
إخراج إصدار الأنف والخروج

-p ، - مقابس
قائمة إخراج المكونات الإضافية المتاحة والخروج. تتحد مع الإسهاب الأعلى لـ
بمزيد من التفصيل

-v = افتراضي ، - الإفراط في الكلام = الافتراضي
كن أكثر إسهابًا. [NOSE_VERBOSE]

- اللفظ = اللفظية
تعيين الإسهاب. - الإسراف = 2 هو نفسه -v

-q = افتراضي ، - هادئ = افتراضي
كن أقل إسهابًا

-c = ملفات ، --config = ملفات
تحميل التكوين من ملف (ملفات) التكوين. يمكن تحديدها عدة مرات ؛ في هذا
حالة ، سيتم تحميل جميع ملفات التكوين ودمجها

-w = أين ، - أين = أين
ابحث عن الاختبارات في هذا الدليل. يمكن تحديدها عدة مرات. الأول
سيتم استخدام الدليل الذي تم تمريره كدليل عمل ، بدلاً من المجلد الحالي
دليل العمل ، وهو الافتراضي. سيتم إضافة الآخرين إلى قائمة الاختبارات
ينفذ. [NOSE_WHERE]

--py3where = PY3WHERE
ابحث عن الاختبارات في هذا الدليل ضمن Python 3.x. الوظائف هي نفسها مثل "أين" ،
ولكن يتم تطبيقه فقط إذا كان يعمل ضمن Python 3.x أو أعلى. لاحظ أنه إذا كان موجودًا تحت
3.x ، يستبدل هذا الخيار تمامًا أي أدلة محددة بـ "أين" ، لذا فإن ملف
خيار "أين" يصبح غير فعال. [NOSE_PY3WHERE]

-m = REGEX ، - تطابق = REGEX ، --testmatch = REGEX
الملفات والأدلة وأسماء الوظائف وأسماء الفئات التي تطابق هذا المعتاد
يعتبر التعبير اختبارات. الافتراضي: (؟: ^ | [b _./-]) [Tt] est [NOSE_TESTMATCH]

- الاختبارات = الأسماء
قم بتشغيل هذه الاختبارات (قائمة مفصولة بفواصل). هذه الحجة مفيدة بشكل رئيسي من
ملفات التكوين؛ في سطر الأوامر ، ما عليك سوى اجتياز الاختبارات لتشغيلها على أنها إضافية
الحجج مع عدم وجود تبديل.

-l = افتراضي ، --Debug = افتراضي
تنشيط تسجيل التصحيح لنظام واحد أو أكثر. مسجلات التصحيح المتاحة: الأنف ،
الأنف ، المستورد ، الأنف ، المفتش ، الأنف ، سدادات الأنف ، الأنف ، النتيجة ، منتقي الأنف.
افصل بين الأسماء المتعددة بفاصلة.

- سجل الأخطاء = FILE
تسجيل رسائل تصحيح الأخطاء لهذا الملف (الافتراضي: sys.stderr)

--logging-config = FILE ، --log-config = FILE
تحميل تهيئة تسجيل الدخول من هذا الملف - لتجاوز جميع إعدادات تكوين التسجيل الأخرى.

-أنا = ريجكس ، - تجاهل الملفات = REGEX
تجاهل تمامًا أي ملف يطابق هذا التعبير العادي. الأسبقية
فوق أي إعدادات أو مكونات إضافية أخرى. تحديد هذا الخيار سيحل محل الافتراضي
جلسة. حدد هذا الخيار عدة مرات لإضافة المزيد من التعبيرات العادية
[NOSE_IGNORE_FILES]

-e = REGEX ، - استثناء = REGEX
لا تشغل اختبارات تطابق التعبير العادي [NOSE_EXCLUDE]

-i = REGEX ، - بما في ذلك = REGEX
سيتم تطبيق هذا التعبير العادي على الملفات والدلائل وأسماء الوظائف و
أسماء الفئات للحصول على فرصة لتضمين اختبارات إضافية لا تتطابق مع TESTMATCH.
حدد هذا الخيار عدة مرات لإضافة المزيد من التعبيرات العادية [NOSE_INCLUDE]

-x ، --قف
توقف عن إجراء الاختبارات بعد الخطأ أو الفشل الأول

-P ، - لا تعديل المسار
لا تُجرِ أي تغييرات على sys.path عند تحميل الاختبارات [NOSE_NOPATH]

--إملف تنفيذى ابحث عن الاختبارات في وحدات Python القابلة للتنفيذ. السلوك الطبيعي هو الاستبعاد
الوحدات القابلة للتنفيذ ، حيث قد لا تكون آمنة للاستيراد [NOSE_INCLUDE_EXE]

- noexe
لا تبحث عن اختبارات في وحدات Python القابلة للتنفيذ. (الافتراضي على ملف
منصة windows للقيام بذلك).

--تعرّف على مساحة الاسم
اجتياز جميع إدخالات المسار لحزمة مساحة الاسم

- أول حزمة تفوز ، --first-pkg-wins ، --1st-pkg-wins
عادةً ما يقوم المستورد الخاص بشركة الأنف بإخراج الحزمة من وحدات النظام إذا رأى الحزمة
بنفس الاسم في مكان مختلف. اضبط هذا الخيار لتعطيل ذلك
السلوك.

--لا بايت ترجمة
منع الأنف من تجميع المصدر بايت في ملفات .pyc أثناء فحص الأنف
لإجراء الاختبارات.

-a = ATTR ، --تر = ATTR
شغّل الاختبارات التي لها سمات محددة بواسطة ATTR [NOSE_ATTR]

-A = EXPR ، --eval-attr = EXPR
قم بتشغيل الاختبارات فقط للسمات التي يقيّمها تعبير Python EXPR إلى True
[NOSE_EVAL_ATTR]

-س، - nocapture
لا تلتقط stdout (ستتم طباعة أي إخراج stdout على الفور)
[NOSE_NOCAPTURE]

- التقاط الصور
تعطيل تسجيل البرنامج المساعد لالتقاط. سيتم ترك تكوين التسجيل كما هو.
[NOSE_NOLOGCAPTURE]

- تنسيق تسجيل الدخول = تنسيق
حدد تنسيقًا مخصصًا لطباعة البيانات. يستخدم نفس التنسيق المستخدم بالمعيار
معالجات قطع الأشجار. [NOSE_LOGFORMAT]

--logging-datefmt = FORMAT
حدد تنسيق التاريخ / الوقت المخصص لطباعة البيانات. يستخدم نفس التنسيق المستخدم
بواسطة معالجات قطع الأشجار القياسية. [NOSE_LOGDATEFMT]

- مرشح التسجيل = مرشح
حدد العبارات المراد تصفيتها للداخل / الخارج. بشكل افتراضي ، يتم التقاط كل شيء. لو
الإخراج مطول جدًا ، استخدم هذا الخيار لتصفية الإخراج غير الضروري. مثال:
filter = foo سيلتقط البيانات الصادرة فقط لـ
foo أو foo.what.ever.sub ولكن ليس foobar أو مسجل آخر. حدد أجهزة تسجيل متعددة
بفاصلة: عامل التصفية = foo، bar، baz. إذا كان أي اسم مسجل مسبوقًا بعلامة الطرح ، على سبيل المثال
عامل التصفية = -foo ، سيتم استبعاده بدلاً من تضمينه. الافتراضي: استبعاد التسجيل
رسائل من الأنف نفسه (-أنف). [NOSE_LOGFILTER]

- معالجات تسجيل الدخول واضحة
امسح كافة معالجات التسجيل الأخرى

- مستوى تسجيل الدخول = افتراضي
تعيين مستوى السجل للالتقاط

--مع التغطية
تمكين تغطية المكون الإضافي: قم بتنشيط تقرير التغطية باستخدام تغطية Ned Batchelder
وحدة.
[NOSE_WITH_COVERAGE]

- حزمة الغلاف = الحزمة
تقييد إخراج التغطية للحزم المحددة [NOSE_COVER_PACKAGE]

- محو الغطاء
امسح إحصائيات التغطية المجمعة مسبقًا قبل التشغيل

- اختبارات التغطية
تضمين وحدات الاختبار في تقرير التغطية [NOSE_COVER_TESTS]

- الحد الأدنى للنسبة المئوية = الافتراضي
الحد الأدنى للنسبة المئوية للتغطية لاجتياز الاختبارات [NOSE_COVER_MIN_PERCENTAGE]

- شامل التغطية
قم بتضمين جميع ملفات python ضمن دليل العمل في تقرير التغطية. مفيد ل
اكتشاف ثغرات في تغطية الاختبار إذا لم يتم استيراد جميع الملفات بواسطة مجموعة الاختبار.
[NOSE_COVER_INCLUSIVE]

- غلاف- html
إنتاج معلومات تغطية HTML

- Cover-html-dir = DIR
إنتاج معلومات تغطية HTML في dir

- الفروع المغطاه
تضمين تغطية الفرع في تقرير التغطية [NOSE_COVER_BRANCHES]

- غلاف- xml
إنتاج معلومات تغطية XML

- غلاف- xml- ملف = ملف
إنتاج معلومات تغطية XML في الملف

--pdb اسقط في مصحح الأخطاء عند الإخفاقات أو الأخطاء

- فشل-pdb
اسقط في مصحح الأخطاء عند الإخفاقات

- أخطاء PDB
اسقط في مصحح الأخطاء

- لا يهمل
تعطيل المعالجة الخاصة لاستثناءات DeprecatedTest.

- مع العقيدة
تمكين المكون الإضافي Doctest: قم بتنشيط المكوِّن الإضافي للدكتورة للعثور على العقيدة وتشغيلها في غير الاختبار
وحدات.
[NOSE_WITH_DOCTEST]

--الاختبارات- Doctest
ابحث أيضًا عن الأطباء في وحدات الاختبار. لاحظ أن الفئات والطرق والوظائف
يجب أن يكون لديه إما عقيدة أو اختبارات غير عقيدة ، وليس كليهما. [NOSE_DOCTEST_TESTS]

--doctest-extension = EXT
ابحث أيضًا عن أدلة في الملفات بهذه الإضافة [NOSE_DOCTEST_EXTENSION]

--doctest-result-variable = VAR
قم بتغيير اسم المتغير الذي تم تعيينه إلى نتيجة آخر أمر مترجم من ملف
تقصير '_'. يمكن استخدامه لتجنب التعارض مع وظيفة _ () المستخدمة للنص
ترجمة. [NOSE_DOCTEST_RESULT_VAR]

- جدول المباريات = SUFFIX
ابحث عن تركيبات لملف دكتست في وحدة مع إلحاق هذا الاسم بالاسم الأساسي
من ملف الطبيب

--doctest-options = الخيارات
حدد خيارات لتمريرها إلى العقيدة. على سبيل المثال. "+ ELLIPSIS ، + NORMALIZE_WHITESPACE"

- مع العزلة
تمكين المكون الإضافي IsolationPlugin: قم بتنشيط المكون الإضافي للعزل لعزل التغييرات عليه
الوحدات الخارجية لوحدة أو حزمة اختبار واحدة. إعادة تعيين المكون الإضافي للعزل
محتويات وحدات sys.modules بعد تشغيل كل وحدة أو حزمة اختبار إلى حالتها
قبل الاختبار. يرجى ملاحظة أنه لا ينبغي استخدام هذا البرنامج المساعد مع التغطية
البرنامج المساعد ، أو في أي حالة أخرى حيث قد ينتج عن إعادة تحميل الوحدة غير مرغوب فيه
آثار جانبية.
[NOSE_WITH_ISOLATION]

-د، --أخطاء مفصلة ، - فشل التفاصيل
أضف التفاصيل إلى ناتج الخطأ بمحاولة تقييم التأكيدات الفاشلة
[NOSE_DETAILED_ERRORS]

- مع الملف الشخصي
تمكين ملف تعريف المكون الإضافي: استخدم هذا المكون الإضافي لتشغيل الاختبارات باستخدام ملف تعريف hotshot.
[NOSE_WITH_PROFILE]

- نوع الملف الشخصي = الترتيب
تعيين ترتيب الفرز لإخراج منشئ ملفات التعريف

- Profile-stats-file = FILE
ملف احصائيات منشئ ملفات التعريف ؛ الافتراضي هو ملف مؤقت جديد في كل شوط

- تقييد ملف التعريف = تقييد
تقييد إخراج منشئ ملفات التعريف. انظر تعليمات pstats.Stats للحصول على التفاصيل

--لا تخطي
تعطيل المعالجة الخاصة لاستثناءات SkipTest.

- مع معرف
تمكين المكون الإضافي TestId: قم بالتنشيط لإضافة معرف اختبار (مثل رقم 1) لكل إخراج اسم اختبار.
التنشيط باستخدام - فشل في إعادة تشغيل الاختبارات الفاشلة فقط.
[NOSE_WITH_ID]

--id- ملف = FILE
تم العثور على معرّفات اختبار المتجر في عمليات التشغيل التجريبية في هذا الملف. الافتراضي هو ملف .noseids في
عمل اخراجي.

--باءت بالفشل
قم بإجراء الاختبارات التي فشلت في آخر تشغيل اختباري.

- العمليات = NUM
يتم تشغيل اختبار الانتشار بين هذه العمليات العديدة. ضع رقمًا مساويًا لعدد
المعالجات أو النوى في جهازك للحصول على أفضل النتائج. تمرير رقم سالب إلى
اجعل عدد العمليات مضبوطًا تلقائيًا على عدد النوى. تمرير 0
يعني تعطيل الاختبار المتوازي. الإعداد الافتراضي هو 0 ما لم يتم تعيين NOSE_PROCESSES.
[NOSE_PROCESSES]

- مهلة العملية = SECONDS
اضبط مهلة إرجاع النتائج من كل عملية عداء اختبار. الافتراضي هو 10.
[NOSE_PROCESS_TIMEOUT]

- عملية إعادة التشغيل
إذا تم تعيينه ، فسيتم إعادة تشغيل كل عملية عاملة بمجرد الانتهاء من اختباراتهم ، وهذا يساعد
السيطرة على تسرب الذاكرة من قتل النظام. [NOSE_PROCESS_RESTARTWORKER]

--مع xunit
تمكين المكون الإضافي Xunit: يوفر هذا المكون الإضافي نتائج الاختبار في XUnit XML القياسي
شكل. [NOSE_WITH_XUNIT]

--xunit-file = FILE
المسار إلى ملف xml لتخزين تقرير xunit فيه. الافتراضي هو nosetests.xml في ملف
دليل العمل [NOSE_XUNIT_FILE]

--xunit-testsuite-name = الحزمة
اسم testuite في xunit xml ، الذي تم إنشاؤه بواسطة البرنامج المساعد. مجموعة الاختبار الافتراضية
الاسم هو nosetests.

- جميع الوحدات
تمكين المكون الإضافي AllModules: اجمع الاختبارات من جميع وحدات Python النمطية.
[NOSE_ALL_MODULES]

--جمع فقط
تمكين التجميع فقط: قم بتجميع وإخراج أسماء الاختبار فقط ، ولا تقم بتشغيل أي اختبارات.
[COLLECT_ONLY]

استخدم nosetests-2.7 عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

  • 1
    مترجم باسكال مجاني
    مترجم باسكال مجاني
    مترجم باسكال 32/64/16 بت لملفات
    Win32 / 64 / CE ، Linux ، Mac OS X / iOS ،
    Android ، FreeBSD ، OS / 2 ، Game Boy
    Advance و Nintendo NDS و DOS ؛
    متوافق لغويًا مع ...
    تحميل برنامج Free Pascal Compiler
  • 2
    معلومات Canon EOS DIGITAL
    معلومات Canon EOS DIGITAL
    لا تحتوي Canon على عدد مصراع
    المدرجة في معلومات EXIF ​​من ملف
    على عكس ملفات Nikon و
    بنتاكس. لا يوجد مقر رسمي لشركة Canon
    تطبيق ...
    قم بتنزيل Canon EOS DIGITAL Info
  • 3
    المرجع
    المرجع
    المرجع هو شوكة التمهيد المرجعي
    مدير. مثل rEFIt ، rEFInd يمكن
    الكشف التلقائي عن التمهيد EFI المثبت الخاص بك
    لوادر ويقدم واجهة مستخدم رسومية جميلة
    قائمة خيار التمهيد ...
    تحميل REFInd
  • 4
    اكسبريس لوك جي إس آي
    اكسبريس لوك جي إس آي
    صفحة تنزيل SourceForge هذه كانت إلى
    منح المستخدمين تنزيل المصدر الخاص بي
    GSIs ، بناءً على فوسون العظيم
    الشغل. أقوم بإنشاء Android Pie و
    أندرويد 1 ...
    تنزيل ExpressLuke GSI
  • 5
    المذيع الموسيقى
    المذيع الموسيقى
    Music Caster هو مشغل موسيقى صينية
    يتيح لك إرسال الموسيقى المحلية إلى ملف
    جهاز Google Cast. في الجولة الأولى ،
    ستحتاج إلى النقر فوق السهم الموجود في ملف
    تاس ...
    تحميل Music Caster
  • 6
    باي كيوت
    باي كيوت
    PyQt هي روابط Python لـ
    كيو تي عبر منصة Digia
    إطار تطوير التطبيق. هو - هي
    يدعم Python v2 و v3 و Qt v4 و
    كيو تي v5 PyQt متاح ...
    تحميل PyQt
  • أكثر "

أوامر لينكس

Ad