Модульный тест - тестирование метода класса - PullRequest
0 голосов
/ 21 февраля 2019

Я создал файл модульного теста для тестирования метода part_firstname_lastname .Я использую PyCharm.Когда я запускаю test_person.py, ошибки нет.Тест успешен.

Когда я запускаю файл в командной строке с помощью python test_person.py -v, возникает ошибка:

из School.person import Personne ModuleNotFoundError: Нет модуля с именем 'School' Blockquote

В pycharm ошибок нет, импорт хороший.

School - это пакет внутри, у меня есть файл person.py .Файл test_person.py находится в другом пакете с именем Unit_Test

1- Как я могу это решить?2- Должен ли я использовать Mock для этого?

class Person:

def __init__(self, first, last):
    self.__code = 0
    self.__firstname = first
    self.__lastname = last


def __str__(self):
    return self.firstname + ' ' + self.lastname

@property
def firstname(self):
    return self.__firstname

@firstname.setter
def firstname(self, value):
    self.__firstname = value

@property
def lastname(self):
    return self.__lastname

@lastname.setter
def lastname(self, value):
    self.__lastname = value

@staticmethod
def part_firstname_lastname(data):
    """
    This method take a part of the data
    @param : str : data
    :return: str : part of the data entered
    """
    if len(data) > 3:
        return data[0:3].upper()
    return data[0:1].upper()

test_person.py

    import unittest
from School.person import Person


class test_person(unittest.TestCase):
    def test_code_personne(self):

        p1 = Personne('Callier', 'John')
        p1.part_firstname_lastname(p1.firstname)
        self.assertEqual(p1.part_firstname_lastname(p1.firstname), 'CAD')


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

1 Ответ

0 голосов
/ 21 февраля 2019

Правильный способ - обновить PYTHONPATH, чтобы он содержал папку, содержащую пакет School.

Это можно сделать на другом уровне:

  • внутри инструмента или структурыкоторый фактически запустит тест (именно так работает PyCharm)
  • измените переменную окружения PYTHONPATH из командной строки перед выполнением теста (синтаксис зависит от ОС и оболочки)
  • changeсистемный список sys.path непосредственно из файла test_person.py перед импортом School - учтите, что это довольно навязчивый способ
  • изменить системный список sys.path из пакета, содержащего test_person.py.Это может быть удобно, если вы всегда используете полный тестовый пакет
...