Interactive HTML result

היי
מחפש איזשהו כלי או פריימוורק שיעזור לי ליצור קובץ תוצאות HTML אינטראקטיבי .
ניסיתי לעבוד עם Unittest, Pytest, Allure אבל בשלושתם כאשר Assert נכשל הטסט נכשל יחד איתו וזה לא מה שאני צריך.
מחפש משהו ידידותי שיאפשר לי להציג

  • שלבים עם תוכן של מידע
  • עבר/נכשל עבור כל שלב
  • צירוף של קבצים לשלב מסויים
  • צירוף של לוג (אופציונלי)

תודה

הי @ohaleva,

אני חושב שאתה מערבב כאן בין כלי לשיטת עבודה - בוא נתחיל עם הדרישה שכאשר assert נכשל הטסט כולו נכשל. זו שיטת עבודה ותפיסה שמשותפת לכל ספריית טסט שתבחר.

ההיגיון שלה זה שכל Test מייצג שורה בדו״ח בדיקות שאתה הולך לקבל, והשורה הזאת יכולה להיות ״הצלחה״ או ״כישלון״. אין חשיבות ל assert-ים השונים בתוך הטסט. הדבר היחיד שחשוב זה אם הטסט הצליח או נכשל. ה Assert-ים לא מייצגים שלבים. בגלל זה בהרבה מקומות ימליצו לך לשים רק Assert אחד בכל טסט.

אתה יכול לתת דוגמא למה אתה מתכוון כשאתה כותב שלבים? נסה להיות כמה שיותר קונקרטי וכך אוכל לנסות לעזור לך למפות את המושג הזה למשהו שמסתדר טוב עם ספריית הבדיקות

אוקיי
אני בונה מערכת שתריץ טסטים המכילים פרוצדורות, המכילות מס שלבים (ללא תלות של שלב בשלב במקרה של כשלון) למשל:

Test1 :
  Procedure1:
    1. Verify ....
      (some checks)
    2. Configure ...
       (Configure something)
    3. Wait for...
    4. Compare - x is greater then 2
    5. Something...
    6. Something
  Procedure2:
    1. Check....
    2. Something...
    3. Compare 1 is greater then 2
    4. Something

ובדוח תוצאות נראה כך:

Test1:
  Procedure1:
   - 1. Verify ..... FAIL
         "open log file A.txt"
         - "find all lines with 'balbala' "
            + "Check how many times does this line exist"
   2. Configure ..... PASS
         "configured success with file :" 2.txt
   3. Wait for .... PASS
   4. Compare 1 is greater then 2 ...... FAIL
          "1 is not greater then 2...."
   5......    PASS
   6......    PASS
  Procedure2:
   1. Check.... PASS
    .........

כאשר בכל שלב יש אפשרות לפירוט נוסף.
אם השלב הראשון מורכב מפרוצדורה א’ והיא קוראת לפרוצדורה ב’ שקוראת לפרוצדורה ג’, בדוח נראה את הפלט של א’ אבל בלחיצה על + ניתן לקבל את הפירוט לב’ ובלחיצה נוספת על + הבא ניתן גם לקבל פירוט לג’. כל הפירוט של התוצאה הוא היררכי.

עכשיו הבנתי

אם תיקח למשל את התוסף הזה ל pytest:

תוכל להגדיר באמצעות describe את הכותרת של הבדיקה ואז הטסטים השונים יקבלו את ה PASS או FAIL
(ואפשר להוסיף עוד רמות בהיררכיה וככה לקבל חלוקה יותר מפורטת לצעדים)

לא הבנת אותי , אנסה להסביר שוב - אני רוצה שכל טסט יכיל מספר של השוואות ושכל השוואה תציג את התוצאה שלה בנפרד ולא שהטסט יציג את התוצאה הכוללת
לדוגמא :

def test_proc_1(self):
    with self.subTest("step 1: compare"):
        Some Compare: 1 == 0 
    with self.subTest("step 2: verify"):
        Some Compare: 1 == 1 
    with self.subTest("step 3: check"):
        Some Compare: 1 > 0 
    with self.subTest("step 4: something"):
        Some Compare: 1 < 0

Result:

test_proc_1:

  step 1: compare - FAIL
  step 2: verify - PASS
  step 3: check - PASS
  step 4: something - FAIL

With Assert command:

Result:

Test1:
test_proc_1:

  step 1: compare - FAIL

ניסית את זה? כי נראה לפי התיעוד שזה מה שאמור לקרות עם הספריה שקישרתי

כלומר שאתה מגדיר בתור describe את Procudure1 ואז בתוכו רושם את כל הבדיקות

משהו כזה:

def describe_list():

    def describe_procedure1():        
        def verify(list):
            list.append('foo')
            list.append('bar')
            assert list == ['foo', 'bar']

        def configure():
          pass

        def wait_for():
          pass

זה לא ייתן את כל הפירוט של השלבים שיש אצלך אבל זה כן יכול להתקרב, ובאמצעות הודעות לוג אולי אפשר להציג שלבים בצורה יותר מפורטת