الفشل/عدم التنفيذ التلقائي للاختبارات المترابطة في Robot Framework

StackOverflow https://stackoverflow.com//questions/25075706

سؤال

إذا قلت أن لدي 100 حالة اختبار لتشغيلها، فإن حالة الاختبار رقم 24 و38 و99 مترابطة.إذًا، هل من الممكن أنه أثناء تنفيذ حالة الاختبار رقم 99، تكتشف حالة حالة الاختبار التي تم تنفيذها مسبقًا (على سبيل المثال، حالة الاختبار رقم 24 أو رقم 38)؟في حالتي، تعتمد حالة الاختبار رقم 99 على حالة حالة الاختبار رقم 38 وحالة الاختبار رقم 24، وبالتالي، في حالة فشل الحالة رقم 24 أو حالة الاختبار رقم 38، أود عدم تنفيذ حالة الاختبار رقم 99 على الإطلاق، وبالتالي توفير الكثير لي من الوقت.أرجو التوضيح مع بعض الأمثلة إن أمكن.شكرا لك مقدما!

هل كانت مفيدة؟

المحلول

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

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

الفكرة الأساسية هي تخزين حالة النجاح/الفشل مؤقتًا عند انتهاء كل اختبار (عبر ملف خاص _end_test طريقة).ثم استخدم هذه القيمة لتحديد ما إذا كان سيتم الفشل فورًا أم لا.

فيما يلي مثال لكيفية استخدام مثل هذه الكلمة الرئيسية:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

وهنا تعريف المكتبة:

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]

نصائح أخرى

لحل هذه المشكلة أستخدم شيئا مثل هذا:

giveacodicetagpre.

لذلك ربما سيكون هذا أمرا للاستعمال لك أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top