Програмиране с Python » Форуми » Общи въпроси

Въпросче за 5-та задачка

(10 posts)

  1. packo
    Member

    "Traceback (most recent call last):

    File ".../test.py", line 39, in test_operations

    self.assertEqual(self.user.rational(3, 4) * 2, self.user.rational(3, 2))

    AssertionError: (3, 2) != (3, 2)

    ======================================================================

    FAIL: test_operations_simple (tester.ProblemTests)

    ----------------------------------------------------------------------

    Traceback (most recent call last):

    File ".../test.py", line 23, in test_operations_simple

    self.assertEqual(self.user.rational(3, 4), self.user.rational(1, 4) + self.user.rational(1, 2))

    AssertionError: (3, 4) != (3, 4)"
    Това някакъв майтап ли е?????

    Posted 5 years ago #
  2. iavoriankov
    Member

    Мен пък ме е яд - отрицателните степени направо повдигам вместо да обърна дробта и получавам приближени резултати ...

    Posted 5 years ago #
  3. packo, проблемът е в начина, по който си дефинирал методите __eq__, __ne__ и сходните — доста са омазани, а assertEqual() всъщност ползва оператора ==, за да сравнява двата подадени му rational()-а.

    Posted 5 years ago #
  4. Kirov
    Member

    Аз може ли да помоля да ми прегледате пак задачата, защото си импортвам една функция, която при теста не се импортва и съответно гърми.
    61133

    Posted 5 years ago #
  5. packo
    Member

    ОК. Схванах. Нищо следващия път повече :Р

    Posted 5 years ago #
  6. alive
    Member

    направил съм една доста глупава гре

    Posted 5 years ago #
  7. Kirov, alive — нали се сещате колко трябва да се внимава за такива гре

    Posted 5 years ago #
  8. SlayerX
    Member

    self.assertRaises(ValueError, self.user.rational, 0, 0)

    Е тук нямам ValueError. По default, rational ми е (0,1), а вие не ми давате 0 като знаменател.
    Другата ми гре

    Posted 5 years ago #
  9. SlayerX, в този тест ние ти подаваме 0 като знаменател. assertRaises() работи по следния начин:

    1. Давате му като първи аргумент изключението, което искате да се уверите, че ще бъде хвърлено.
    2. Като втори аргумент му давате callable-а, който да бъде извикан.
    3. Останалите подадени на assertRaises() аргументи се подават на callable-a.

    Последното е необходимо, за да може assertRaises() да бъде дефинирано като нещо от сорта:

    def assertRaises(expected_exception, tested_callable, *args):
      try:
        tested_callable(*args)
      except expected_exception:
        pass
      else:
        raise expected_exception + " not raised."

    С други думи, вика се self.user.rational(0, 0) и се проверява дали това хвърля ValueError, както трябва да бъде според условието. В твоя случай, self.user.rational(0, 0) не хвърля това изключение, понеже в __init__() няма

    Posted 5 years ago #
  10. alive
    Member

    Posted 5 years ago #

RSS feed for this topic

Reply

You must log in to post.