unittest'ы в Python примеры использования на будущее

Не люблю долго описывать, то чем пользуюсь, ибо мне понятнее примеры, и поэтому зачастую пользуюсь старыми исходниками. Но так как были инциденты потери данных решил сохранить, важные разделы здесь.
Файл geometry.py

#coding=utf-8# -*- coding: utf-8 -*-

 

from math import *import sysclass point:  def __init__(self, x, y):    self.x = float(x)    self.y = float(y)      def __str__(self):    return '({0}, {1})'.format(self.x, self.y)    def __eq__(self, other):    return True if ((self.x == other.x) and (self.y == other.y)) else False    def __ne__(self, other):    return True if ((self.x != other.x) or (self.y != other.y)) else False


Файл тестирования test_geometry.py:

#coding=utf-8# -*- coding: utf-8 -*-from geometry import *import unittestclass testGeometry(unittest.TestCase):  # Создадим 4 точки, которые будем использовать для тестирования  def setUp(self):    self.A = point(5, 6)    self.B = point(6, 10)    self.C = point(5.0, 6.0)    self.D = point(-5, -6)  # Тестируем создание точки  def test_init(self):    # Проверим правильность получения координат    self.assertEqual((self.A.x, self.A.y), (float(5), float(6)), "Полученные значения не являются вещественными!!!")    self.assertEqual((self.B.x, self.B.y), (float(6), float(10)), "Полученные значения не являются вещественными!!!")    self.assertEqual((self.C.x, self.C.y), (float(5), float(6)), "Полученные значения не являются вещественными!!!")    self.assertEqual((self.D.x, self.D.y), (float(-5), float(-6)), "Полученные значения не являются вещественными!!!")  # Тестируем правильность формата печати  def test_str(self):    self.assertTrue(str(self.A) == "(5.0, 6.0)", "Неправильный вывод на экран!!!")    self.assertTrue(str(self.B) == "(6.0, 10.0)", "Неправильный вывод на экран!!!")    self.assertTrue(str(self.C) == "(5.0, 6.0)", "Неправильный вывод на экран!!!")    self.assertTrue(str(self.D) == "(-5.0, -6.0)", "Неправильный вывод на экран!!!")  # Тестируем операцию равенства  def test_eq(self):    self.assertTrue(self.A == self.C, "Данные две точки равны, а в результате тестирования, они оказались неравными!!!")    self.assertFalse(self.A == self.B, "Данные две точки неравны, а в результате тестирования, они оказались равными!!!")    self.assertFalse(self.A == self.D, "Данные две точки неравны, а в результате тестирования, они оказались равными!!!")    def test_ne(self):    self.assertFalse(self.A != self.C, "Данные две точки равны, а в результате тестирования, они оказались неравными!!!")    self.assertTrue(self.A != self.B, "Данные две точки неравны, а в результате тестирования, они оказались равными!!!")    self.assertTrue(self.A != self.D, "Данные две точки неравны, а в результате тестирования, они оказались равными!!!")# Запускаем тестирование, если файл запущен без аргументовif __name__ == '__main__':    unittest.main()

Данных примеров лично мне хватит для большинства целей, если честно я даже понять не могу зачем нужны функции assertEqual и assertNotEqual, если есть  accertTrue и assertFalse, хотя на вкус и цвет фломастеров нет.

******************

Наткнулся на еще один интересный момент, если хочется проверить, отработку, какого-либо исключения, придется повыеживаться. Приведу пример.
Тестируемый код:

class segment:
  def __init__(self, point0, point1):
    if point0 == point1:
      raise(NameError("Это не отрезок, это точка!!!"))
    else:
      self.begin = point0
      self.end = point1

Тестирование:

# Проверим инициализацию отрезков    try:      self.AC = segment(self.A, self.C)    except:      self.assertTrue(True, "Не возникает ошибки при задании точки вместо отрезка!")

Далее, если наткнусь на интересные аспекты, дополню раздел.

 

 

Автор: Konstantin Goncharov

Источник: https://ewigestudent.blogspot.ru



Обсудить на форуме

Комментарии

Добавить комментарий
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent