pytest识别测试用例的机制
- 文件
以test_开头或以_test结尾的python文件,即test_.py或_test.py - 类,在第一点识别到的文件中的类,且满足一下任一条件:
1)以Test_开头,且没有__init__()初始化函数的类,可以没有父类
2)继承自unittest.TeatCase的类,需要以test_或Test_开头 - 函数
1)第一点的文件中独立的以test_开头的函数,不在任何类中
2)识别到类中的以test_开头的函数
以上识别方式,也可以在pytest.ini文件中自定义为其他机智。
pytest和unittest的区别:
- unittest是Python自带的测试框架,无需安装;pytest是第三方测试框架,需要使用pip install pytest 命令进行安装。
- unittest通过类的方式例组织测试用例,即继承自unittest.TesetCase的类,才能被unittest识别到;pytest则可以不用继承任何类。
- unittest断言通过调用自身的断言函数来实现,即self.assert*()的形式;pytest则可以直接通过assert 语句进行断言。
- unittest的断言函数比较多样,如assertTrue、assertEaual、assertIn等;pytest的断言则只有assert关键字。
- unittest需要通过TestSuites、TestLoader和TestRunner类来组织用例;pytest则可以在指定目录中根据配置自动识别所有用例。