trust already work unittest'ы в Python примеры использования на будущее » Портал инженера

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

    Заметки по Python

    Порой требуется, найти минимальные и максимальные значения списка...

    EtherCAT State Machine

    Часто на ПНР приходится сталкиваться с крайне неблагоприятной электромагнитной обстановкой. Не на конкретном предприятии, а вообще повсеместно.

    Аббревиатуры телефонных кабелей и проводов

    02Y - пористый полиэтилен 5Y - политетрафтор­этилен (фторопласт) 6Y - фторэтилен-пропиленовый сополимер 7Y - этилентетрафтор­этиленовый сополимер

    Аббревиатуры гармонизированных кабелей

    H - безгалогеновый ПВХ изоляция жилы/внешняя оболочка   SL - кабель контрольный Li - многожильный проводник по VDE

    Аббревиатуры кабелей управления

    LH - соединительный кабель для легкой механической нагрузки MH - соединительный кабель для средней механической нагрузки SH - соединительный кабель для большой механической нагрузки

    Логический пробник

    Для наладки и ремонта ZX-Spectrum совместимых компьютеров полезным приспособлением является логический пробник. По сути это прибор, отображающий логический уровень сигнала на входе (лог.0 или лог.1).