zoukankan      html  css  js  c++  java
  • 对比 Unittest 和 Pytest

    一、用例编写规则

    1,Unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:

      (1)测试文件必须先import unittest

      (2)测试类必须继承unittest.TestCase

      (3)测试方法必须以“test_”开头

      (4)测试类必须要有unittest.main()方法

    2,Pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则:

      (1)测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)

      (2)测试方法必须以“test_”开头。

      (3)测试类命名以"Test"开头。

    总结:

    Unittest:用例格式--复杂,不能兼容Pytest用例;

    Pytest:用例格式--简单,可以兼容Unittest用例;

    二、用例前置和后置

    1,Unittest提供了setUp/tearDown,只能针对所有用例。

    2,Pytest提供了模块级、函数级、类级、方法级的setup/teardown,比Unittest的setUp/tearDown更灵活。

    • 模块级(setup_module/teardown_module)开始于模块始末,全局的

    • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)

    • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)

    • 方法级(setup_method/teardown_method)开始于方法始末(在类中)

    • 类里面的(setup/teardown)运行在调用方法的前后

    Pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中使用fixture函数。fixture的使用范围可以是function、module、class、session。

    firture相对于setup和teardown来说有以下几点优势:

      (1)命名方式灵活,不局限于setup和teardown这几个命名

      (2)conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。

      (3)scope="module" 可以实现多个.py跨文件共享前置

      (4)scope="session" 以实现多个.py跨文件使用一个session来完成多个用例

      (5)用yield来唤醒teardown的执行

    三、断言

    1,Unittest提供了assertEqual、assertIn、assertTrue、assertFalse。

    2,Pytest直接使用assert 表达式。

    四、报告

    1,Unittest使用HTMLTestRunnerNew库。

    2,Pytest有pytest-HTML、allure插件。

    五、失败重跑

    1,Unittest无此功能。

    2,Pytest支持用例执行失败重跑,pytest-rerunfailures插件。

    六、参数化

    1,Unittest需依赖ddt库,

    2,Pytest直接使用 @pytest.mark.parametrize 装饰器。

    七、用例分类执行

    1,Unittest默认执行全部的用例,可以通过加载testsuite执行部门模块用例;

    2,Pytest可以通过 @pytest.mark 来标记测试用例,执行命令加上参数“-m”即可运行标记的用例。

  • 相关阅读:
    Vue路由机制
    谷歌浏览器打不开应用商店的解决方法
    Vue报错——Component template should contain exactly one root element. If you are using vif on multiple elements, use velseif to chain them instead.
    Vue.js学习之——安装
    Vue使用axios无法读取data的解决办法
    关于localstorage存储JSON对象的问题
    2013年整体计划
    个人喜欢的警语收集
    Linux防火墙的关闭和开启
    Flex修改title 转载
  • 原文地址:https://www.cnblogs.com/ailiailan/p/13434433.html
Copyright © 2011-2022 走看看