单元测试-测试类的方法

时间:2019-02-21 10:06:31

标签: python python-3.x unit-testing python-unittest

我创建了一个单元测试文件来测试方法 part_firstname_lastname 。我正在使用PyCharm。当我运行test_person.py时,没有错误。测试是成功的。

当我使用python test_person.py -v在命令行中运行文件时,错误是:

  

从School.person导入Personne ModuleNotFoundError:无模块   名为“学校”   引用

在pycharm中我没有任何错误,导入很好。

学校是一个内部软件包,文件名为 person.py 。文件 test_person.py 位于另一个名为 Unit_Test

的程序包中

1-我该如何解决? 2-我必须为此使用模拟吗?

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 :(得分:0)

正确的方法是更新PYTHONPATH以包含包含School软件包的文件夹。

可以在不同级别上完成:

  • 在将实际启动测试的工具或框架中(PyCharm的工作方式)
  • 在执行测试之前从命令行更改PYTHONPATH环境变量(语法取决于操作系统和外壳程序)
  • 在导入sys.path之前直接从test_person.py文件中更改School系统列表-请注意,这是一种相当侵入性的方式
  • 从包含sys.path的程序包中更改test_person.py系统列表。如果您始终使用完整的测试包,这可能是一种便捷的方法