Python主流框架
- Unittest
- unittest是Python标准库中自带的一款单元测试框架,支持自动化测试,测试用例的初始化和关闭,测试用例的聚合等功能
- Unitest特性:通过class方式,将测试用例组织在一起
- Unitest不需要单独下载,可直接在Python内直接使用
实例:
import unittest
class Testunittest(unittest.TestCase):
def test_testcase(self):
self.assertEqual("abc".upper(),"ABC")
if __name__ == "__main__":
unittest.main()
- Nose
- Nose是Python的第三方单元测试框架,需要先进行下载安装:pip install nose
- nose现在被nose2所继承,但nose2不支持nose的全部功能
实例:
import nose
def test_testcase():
assert "abc".upper() == "ABC"
pass
if __name__ == "__main__"
nose.runmodule
- Pytest
- Pytest是Python的第三方单元测试库,需要在使用前提前进行下载安装:pip install pytest
- Pytest兼容Unittest框架,可以直接运行Unittest
- 支持简单的assert语句,能更加丰富
- 自动识别测试模块和测试函数
- 兼容unittest和nose测试集
- 支持python3
import pytest
def test_testcase():
assert "abc" .upper() == "ABC"
if __name__ == "__main__"
pytest.main()
Pytest和Unittest区别
- 用例编写规则
- Pytest需要在使用前先下载,Unittest不需要下载可直接使用
- Pytest和Unittest测试方法必须以"test_"开头
- Pytest测试类命名以“Test”开头
- Pytest测试文件名必须以"test_“开头或者”_test"结尾
- Pytest可直接执行Unittest框架
- Unittest测试类必须要有unittest.main()方法
- Unittest测试类必须继承unittest.TestCase
- 断言
- Unittest:assertEqual、assertln、assertTrue、assertFalse
- Pytest: 可直接使用assert表达式
- 测试报告
- Unittest:使用HTMLTest RunnerNew库
- Pytest: pytest-HTML 、allure插件
- 失败重跑
- Unittest无此功能
- Pytest可使用Pytest-rerunfailures插件
- 参数化
- Unittest:需依赖ddt库
- Pytest:可直接使用mark装饰器
- 用例执行
- Unitest可通过testsuit执行部分用例
- Pytest可通过@pytest.mark标记类和方法