Pytest VS Unittest 简单说一下之间的优缺点

时间:2024-03-05 19:06:10

一、什么是单元测试框架?

unittest 是python标准的单元测试框架模块

pytest 是python第三方库的测试框架

二、从兼容性方面考虑

因unnitest是标准库,所以unnitest的兼容性更强

三、安装方面

unnitest是标准库,python是自带的,安装python以后可以直接导入

第三方库:需要独立安装,要注意兼容性,有可能会存在安装不成功,或者是某些库的功能使用不了。

四、unittest 的使用更加复杂一些, pytest 更加容易使用。

eg:

unittest 

第一步:创建测试套件

suite = unittest.TestSuite()

第二步:testloader.discover(test_case_dir), 加载测试用例到套件

loader = unittest.TestLoader()

suite.addTest(loader.discover(CASE_DIR))

第三步:启动器, 运行, testrunner.run()

runner.run(suite)

pytest , 自动收集测试用例,自动执行测试用例。

pytest 运行:
1, pytest.main() python: 代码形式. 生产环境。
2, 命令行的形式 : 在项目根目录下运行 pytest 命令
3, pycharm 右键运行(如果pycharm 没有出现 pytest 命令,run. configraiton 当中进行配置。)

五、断言

pytest    assert 1=1

unittest  assertEqual(expected,autual)

六、pytest可以灵活运用指定的测试用例,标签化,回归,正向、冒烟、登陆  使用的是pytest的mark功能

七、pytest (夹具 )环境管理灵活,会话、模块,哪个用,哪个不用。fixture,setup,tearDown,setupClass,setUpModule

八、pytest有丰富的插件,测试报告。eg: allure

九、pytest 和unnitest/nose兼容 意思是以unnitest的框架写的用例,以pytest去执行是可以的,但是反之就不行。

十、pytest发现用例的格式为:

pytest 收集测试用例的规则(pytest 将怎样的函数看成是测试用例)
1, 模块名: test_*.py 或者是 *_test.py
2, 类名: TestLogin
3,   方法名: test_
4,   pytest 的测试用例并不一定要以类的形式存在,可以直接以函数的形式存在:
def test_demo():
      pass
5.类形式:
class TestYang:
# 不要写 __init__() 函数, 容易报错
def test_yangleduo(self):
      pass

当在哪个文件夹,(目录)执行 pytest 指令,那么 pytest 会自动发现当前目录下所有
test_ 开头的 py 文件,将这些文件当成测试用例文件.

unnitest 不能找到直接以函数的形式存在的用例

十一、用例的执行顺序

unittest 是根据 ascii 编吗 排序
test_login_1_success test_login_2_error
pytest 的排序: 从上到下