Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
6 / 6 / 0
Регистрация: 02.06.2020
Сообщений: 65

Unittest ошибка теста AssertionError

09.10.2020, 19:19. Показов 2851. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть задача
Создать класс для работы с векторами
в 3-мерном пространстве. Проверку выполнить с помощью методов класса unittest.TestCase
при проверке сложения выдает ошибку:
self.assertEqual(must_be1, result1)
AssertionError: <__main__.Vector object at 0x032335C8> != <__main__.Vector object at 0x03233550>
что я делаю не так?


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from math import sqrt, acos, degrees
import unittest
 
class Vector:
    def __init__(self, x, y, z):
        self.x, self.y, self.z = float(x), float(y), float(z)
        # self.x, self.y, self.z = x, y, z
 
    def __str__(self):
        return f'вектор ({self.x},{self.y},{self.z})'
 
    #сложение
    def __add__(self, other):
        x1 = self.x + other.x
        y1 = self.y + other.y
        z1 = self.z + other.z
        return Vector(x1, y1, z1)
 
    # вычитание
    def __sub__(self, other):
        x1 = self.x - other.x
        y1 = self.y - other.y
        z1 = self.z - other.z
        return Vector(x1, y1, z1)
 
    def __float__(self):
        x1 = self.x ** 2
        y1 = self.y ** 2
        z1 = self.z ** 2
        return round(sqrt(x1 + y1 + z1),2)
 
    # в данной функции предусмотрено умножение вектора на число
    def mull_by(self, n):
        x1 = float(self.x * n)
        y1 = float(self.y * n)
        z1 = float(self.z * n)
        return Vector(x1,y1,z1)
 
    # в данной функции предусмотрено умножение вектора на вектор
    def __mul__(self, other):
        x1 = self.x * other.x
        y1 = self.y * other.y
        z1 = self.z * other.z
        # if self.x == other.x and self.y == other.y and self.z == other.z:
        #     return round(sqrt(x1 + y1 + z1),2)
        return (x1+y1+z1)
 
    # векторное прозведение
    def vect_mull(self, other):
        x1 = self.y * other.z - self.z * other.y
        y1 = self.z * other.x - self.x * other.z
        z1 = self.x * other.y - self.y * other.x
        return Vector(x1, y1, z1)
 
    # угол между векторами
    def angle_vectors(self, other):
        cos_angle = (self.x * other.x + self.y * other.y + self.z * other.z) / (
                    (sqrt(self.x ** 2 + self.y ** 2 + self.z ** 2)) *
                    (sqrt(other.x ** 2 + other.y ** 2 + other.z ** 2)))
        angle = degrees(acos(cos_angle))  # перевод радиан в градусы
        return f'Угол между векторами: {angle:.2f} градусов'
 
    #коллинеарность
    def collin(self, other):
        if self.x / other.x == self.y / other.y == self.z / other.z:
            return True
        else:
            return False
    def __eq__(self, other):
        return float(self) == float(other)
 
class TestVector(unittest.TestCase):
    def setUp(self):
        self.a = Vector(2, 3, 4)
        self.b = Vector(4, 5, 1)
 
    def test1(self):
        # тестируем +
        must_be1 = Vector(7.0, 7.0, 5.0)
        result1 = self.a + self.b
        self.assertEqual(must_be1, result1)
 
if __name__ == '__main__':
    coords = [(2, 3, 4), (5, 4, 1)]
    vectors = [Vector(x, y, z) for x, y, z in coords]
    for vector in vectors:
        print(vector)
    a = Vector(2, 3, 4)
    b = Vector(5, 4, 1)
    c = a + b
    print(c)
    d = a - b
    print(d)
    e = a.mull_by(2.5)
    print(e)
    z = a * b
    print(z)
    q = a.vect_mull(b)
    print(q)
    l = a * a
    print(l)
    j = b * b
    print(j)
    angle = a.angle_vectors(b)
    print(angle)
    print(a.collin(b))
    print(a.collin(e))
 
    unittest.main(verbosity=2)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2020, 19:19
Ответы с готовыми решениями:

Ошибка AssertionError
import os import zlib def keystream(): key = os.urandom(2) index = 0 while 1: index+=1 if index &gt;= len(key): key...

Проблема с AssertionError
Здравствуйте, у меня возникла проблема, связанная с assert'ом. Выдает AssertionError, хотя по идее не должно. В чём причина? class...

nosetest error Ошибка при выполнении unittest(nosetest)
У меня есть JSON_test.py файл, который содержит в себе юнит-тесты: import unittest from objects import * from...

4
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
09.10.2020, 19:24
Цитата Сообщение от oceanters Посмотреть сообщение
что я делаю не так?
начни с добавления __str__ для вектора чтобы выводил все параметры, включая флоат, ну а во вторых они не равны
0
6 / 6 / 0
Регистрация: 02.06.2020
Сообщений: 65
09.10.2020, 19:28  [ТС]
Welemir1, у меня есть __str__
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
09.10.2020, 19:32
Лучший ответ Сообщение было отмечено oceanters как решение

Решение

oceanters, да, просмотрел, видимо юниттест использует repr
так или иначе ты руками то попробуй векторы сложить свои - результат другой, тест падает верно
0
6 / 6 / 0
Регистрация: 02.06.2020
Сообщений: 65
09.10.2020, 19:35  [ТС]
Welemir1, ОЙ ,спасибо!!! я ведь действительно координаты не те написала ,что в main. вектор b перепутала. Спасибо ,что усмотрели!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2020, 19:35
Помогаю со студенческими работами здесь

Ошибка COR_PROFILER_PATH и COR_PROFILER при использовании Shim в UnitTest
Привет всем. Пишу, unit test с использованием Shim, делаю это первый раз, до этого ограничивался Stub-ами. Для изучения механики...

Проблема с LinkedList java.lang.AssertionError добавляется лишний пробел при Assert.assertEquals()
Есть своя реализация LinkedList, пытаюсь ее протестировать с помощью junit, но получаю error из-за того что добавляется лишний пробел: ...

Ошибка теста видеопамяти
Всем добрый вечер. у меня уже была здесь тема с синими экранами в играх. Делал тест видеопамяти Video memory stress. Так вот он через...

генерировать данные для теста на делфи и экспортировать их в виде теста в ворд
ПОМОГИТЕ МНЕ ДАННЫЕ ЭКСПОРТИРОВАТЬ В ВОРД, Т.Е. В ВИДЕ ТЕСТА....

Ошибка запуска теста в Jenkins
Здравствуйте! На работе подняли сервис Jenkins на Linux для запуска автотестов. Сами тесты должны прогоняться на удаленной машине....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru