Django фильтр timestamp__range

from: http://www.lengrand.fr/2011/12/pythonunittest-assertraises-raises-error/

Во-первых, вот соответствующая (все еще dum : p) в файле dum_function.py:

def square_value(a):
   """
   Returns the square value of a.
   """
   try:
       out = a*a
   except TypeError:
       raise TypeError("Input should be a string:")

   return out

Вот тест, который нужно выполнить (только этот тест вставлен):

import dum_function as df # import function module
import unittest
class Test(unittest.TestCase):
   """
      The class inherits from unittest
      """
   def setUp(self):
       """
       This method is called before each test
       """
       self.false_int = "A"

   def tearDown(self):
       """
       This method is called after each test
       """
       pass
      #---
         ## TESTS
   def test_square_value(self):
       # assertRaises(excClass, callableObj) prototype
       self.assertRaises(TypeError, df.square_value(self.false_int))

   if __name__ == "__main__":
       unittest.main()

Теперь мы готовы проверьте нашу функцию! Вот что происходит при попытке выполнить тест:

======================================================================
ERROR: test_square_value (__main__.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_dum_function.py", line 22, in test_square_value
    self.assertRaises(TypeError, df.square_value(self.false_int))
  File "/home/jlengrand/Desktop/function.py", line 8, in square_value
    raise TypeError("Input should be a string:")
TypeError: Input should be a string:

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

ТипError активирован и генерирует ошибку теста. Проблема в том, что это именно то, что мы хотели: s.

Чтобы избежать этой ошибки, просто запустите функцию, используя лямбда в тестовом вызове:

self.assertRaises(TypeError, lambda: df.square_value(self.false_int))

Конечный вывод :

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Отлично!

... и для меня тоже отлично!

Thansk много г-н Жюльен Ленгранд-Ламберт

0
задан Trace 3 March 2019 в 22:59
поделиться

1 ответ

Вы пропускаете знак равенства. Это должно быть:

return HourlyTick.objects.filter(timestamp__range=(start, end))

Вам также нужно будет преобразовать строки datetime в объекты datetime.

0
ответ дан dan-klasson 3 March 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: