@ekolodenets

Python. Какая проблема в оформлении теста?

конец файла для теста который введенную строчку переводит в словарь список и количество всех атомов:
if __name__ == '__main__':
    var = 'H2O'
    result = MyClass().parse(var)
    print(result)


содержимое теста:
import unittest
from ..Tasks.MoleculeToAtoms import MyClass

class Test_parse(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_parsing(self):
        self.assertEqual(MyClass().parse('H2O'), ({'H': 2, 'O': 1}))
        self.assertEqual(MyClass().parse('Mg(OH)2'), ({'Mg': 1, 'O': 2, 'H': 2}))
        self.assertEqual(MyClass().parse('K4[ON(SO3)2]2'), ({'K': 4, 'O': 14, 'N': 2, 'S': 4}))


вроде все получалось. Тест прошел.. добавил 4ую строчку началась проблема, которая не решается даже удалив ее
Ошибка: ValueError: attempted relative import beyond top-level package
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
@DmitryLink
python developer
Привет. Тебе нужно создать файл setup.py в корне проекта, вот документация: https://docs.python.org/3/distutils/setupscript.html.
После этого установить свой пакет - pip install --editable . (точка в конце). Дальше в тестах можешь импортировать пакет например так:
from tasks import MyClass
Ответ написан
Комментировать
@ekolodenets Автор вопроса
капец.. удаление каких то 2х точек решило вопрос. только все равно не понятно откуда пайтон знает что нужная папка находится на уровень выше?
import unittest

from Tasks.MoleculeToAtoms import MyClass

class Test_parse(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_parsing(self):

        self.assertEqual(MyClass().parse('H2O'), ({'H': 2, 'O': 1}))
        self.assertEqual(MyClass().parse('Mg(OH)2'), ({'Mg': 1, 'O': 2, 'H': 2}))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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