unittest是Python中的一个测试框架,用于编写和执行单元测试。
在unittest中,cls和self都是用于引用类的实例或类本身的变量。
-
cls:在类方法中使用,表示类本身。可以通过cls来访问类的属性和方法,也可以用它来创建新的实例对象。通常在setUpClass和tearDownClass等类级别的方法中使用。在所有测试用例执行之前执行一次
-
self:在实例方法中使用,表示类的实例对象。通过self来访问实例的属性和方法。在每个测试用例执行之前执行一次
下面是一个示例,演示了如何使用cls和self:
import unittest
class MyClass:
def __init__(self, value):
self.value = value
def calculate(self, x):
return self.value + x
class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass")
cls.my_object = MyClass(10)
def setUp(self):
print("setUp")
self.x = 5
def tearDown(self):
print("tearDown")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
del cls.my_object
def test_calculate(self):
result = self.my_object.calculate(self.x)
self.assertEqual(result, 15)
if __name__ == '__main__':
unittest.main()
在上面的示例中,setUpClass和tearDownClass是类级别的方法,通过cls来引用类本身。setUp和tearDown是实例级别的方法,通过self引用实例对象。test_calculate是一个测试方法,通过self来引用实例对象,并进行断言验证。
注意:在类级别的setUpClass和tearDownClass方法中,可以使用cls来创建类的实例对象,并在测试方法之前和之后进行一次性的设置和清理。而在实例级别的setUp和tearDown方法中,可以使用self来设置和清理每个测试方法所需的环境。