测试人社区

pytest下的unittest框架几个方法该怎么理解

问题1:是不是导入了unittest包时,创建demo类就必须要默认了一个‘unittest.TestCase’父类?以下方法作用是什么,而且会有—>None?
class demo(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print(“setUp class”)

@classmethod
def tearDownClass(cls) -> None:
    print("teardown  class")

def setUp(self) -> None:
    print("setUp")

def tearDown(self) -> None:
    print("teardown")

unittest 工作机制就是,要让测试类继承unittest.TestCase, 这样它才认为这个类是个测试类,否则就定义了一个普通的类,定义成测试类的好处就是可以将这个类里面的测试方法以它规定的模式来执行, 或者放到测试套件中执行。

这里面的setupclass() ,setup() 是unittest 测试装置,它是父类TestCase里面的方法, 用于测试用例前进行一些初始化设置的函数,名字不能变。这里你复写了这个方法,可以在这里做一些初始化的操作,比如数据库连接,创建driver对象,准备一些数据资源等。setUpClass () 是整个类执行前被执行一次, 所以这里它是一个类函数,要加个类的装饰器 @classmethodsetUp(self) 这是每个测试方法前会被执行一次。

相对应的,tearDown(self) 会在每个测试方法执行后被执行,tearDownClass(cls) 会在每个测试类最后执行一次。

它们都没有返回值 ,默认返回值 是None, -> None 是指定返回值 类型。也可以去掉。

这个定义比较麻烦,也不够灵活 ,建议使用pytest 作为组织用例的单元测试框架,它更灵活,也更简单。

谢谢老师