Python - 什么是在不同类中单元测试方法的正确方式?

2024-06-27 09:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个叫做消费者.py,包含一个类(消费者)。这个类是使用一个配置文件初始化的,它包含用于计算的不同参数和用于日志记录的loqque的名称。在

我想为这个类编写单元测试,所以我制作了一个名为test的脚本_消费者.py使用一个名为TestConsumerMethods的类(unittest.TestCase). 在

现在,我所做的是创建一个名为cons的Consumer类的新对象,然后使用它调用类方法进行测试。例如,Consumer有一个简单的方法来检查给定目录中是否存在文件。我做的测试看起来像这样

import Consumer
from Consumer import Consumer

cons = Consumer('mockconfig.config', 'logque1')

class TestConsumerMethods(unittest.TestCase):

   def test_fileExists(self):
       self.assertEqual(cons.file_exists('./dir/', 'thisDoesntExist.config), False)
       self. assertEqual(cons.file_exists('./dir/', thisDoesExist.config), True)

这是测试我班的正确方法吗?我的意思是,理想情况下我只想使用类方法而不必实例化类,因为要“隔离”代码,对吗?在


Tags: 方法pytestimportselfconfigconsumerexists
2条回答

我不确定您是否正在搜索,但您可以将测试添加到文件末尾,如下所示:

#!/usr/bin/python

...

class TestConsumerMethods(...):
    ...

if __name__ == "__main__":
    # add your tests here.

这样,通过执行包含类定义的文件,就可以执行放在if语句中的测试。在

这样,测试将只在直接执行文件本身时执行,而不是从中导入类。在

不要让一个全局对象作为测试对象,因为它可能会导致某个状态被一个测试设置,并影响另一个测试。在

每个测试都应该独立运行,并且完全独立于其他测试。在

相反,可以在测试中创建对象,也可以通过将其放入setUp方法为每个测试自动创建该对象:

import Consumer
from Consumer import Consumer


class TestConsumerMethods(unittest.TestCase):
    def setUp(self):
        self.cons = Consumer('mockconfig.config', 'logque1')

    def test_fileExists(self):
        self.assertEqual(self.cons.file_exists('./dir/', 'thisDoesntExist.config), False)
        self. assertEqual(self.cons.file_exists('./dir/', thisDoesExist.config), True)

至于你是否真的要实例化你的类,这取决于类的实现。我想一般来说,你应该希望实例化一个类来测试它的方法。在

相关问题 更多 >