一、用例编写规则

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"开头。

 总结: pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。 pytest插件丰富,比如flask插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行。      

二、用例前置和后置

1.unittest提供了setUp/tearDown,每个用例运行前、结束后运行一次。setUpClass和tearDownClass,用例执行前、结束后,只运行一次。

 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来说有以下几点优势:
  • 命名方式灵活,不局限于setup和teardown这几个命名
  • conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。
  • scope="module" 可以实现多个.py跨文件共享前置
  • scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
  • 用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默认执行全部用例,也可以通过加载testsuit,执行部分用例。

  2、pytest可以通过@pytest.mark来标记类和方法,pytest.main加入参数("-m")可以只运行标记的类和方法。

unittest和pytest对比的更多相关文章

  1. Python 自动化测试框架 unittest 和 pytest 对比

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  2. unittest 和 pytest 对比

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  3. 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!

    基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest    ②unittest demo 中 包含 web.api 自动化测试框架 ...

  4. python 自动化测试框架unittest与pytest的区别

    前言: 有使用过unittest单元测试框架,再使用pytest单元测试框架,就可以明显感觉到pytest比unittest真的简洁.方便很多. unittest与pytest的区别: 主要从用例编写 ...

  5. pytest框架与unittest框架的对比

    一.pytest的优势 pytest是基于unittest之上的单元测试框架,它的优势如下: 自动发现测试模块和测试方法 断言使用 assert + 表达式 可以设置测试会话级(session).模块 ...

  6. unittest和pytest的区别

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  7. pycharm右键运行unittest、pytest文件

    在实际学习过程中,有时候会出现右键运行文件,但没有任何结果的情况.这就是没有使用unittest/pytest 的方式运行. 解决方法: 添加好

  8. python自动化测试框架的unittest与pytest前后置条件的区别

    前言: 笔者先试有用过unittest的前后置条件和pytest的前后置条件,觉得pytest的前后置条件比unittest的要简洁.方便很多.不过在使用unittest的前后置条件时,已经觉得在和每 ...

  9. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

      测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计,框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求 ...

随机推荐

  1. arcengine 将地图文件保存为图片(包括各种图片格式)

    1,最近做了个地图文件输出图片的功能,思想主要就是利用MapControl的ActiveView中的out方法: 2代码如下:欢迎交流指正 SaveFileDialog m_save = new Sa ...

  2. Brackets前端开发编辑器

    http://www.cnblogs.com/xiazdong/p/3550148.html http://blog.csdn.net/shinesun001/article/details/5348 ...

  3. Java基础50题test2—输出素数

    [输出素数] 题目:判断 101-200 之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数 pu ...

  4. bootstrap警告框、进度条和列表组

    警告框   <div class="container">      <div class="alert alert-success" rol ...

  5. Visual Studio使用技巧学习

      F7:  代码窗口 Shift+F7:   对象窗口 F4:  属性窗口 闪电图标:    对象的事件 F5:   编译及运行 Ctrl+F5:  编译及运行(不调试) svm+两次Tab:  s ...

  6. Yii2.0数据格式器

    平时我们在写代码中,总是要写一个单独的文件来全局处理常用的数据格式.Yii2.0却很人性化,为我们内置了一套数据格式器. 1.格式化日期和时间 Yii::$app->formatter-> ...

  7. 查询sqlserver数据库,表占用数据大小

     if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..#tabName') and xtype='u')dro ...

  8. python之list [ 列表 ]

    1. 列表是什么? list [ ] 逗号隔开 是一个容器 可以存放任意类型 列表 == 书包 书包里可以放水杯.衣服.袜子.钱包 钱包里可以放钱.身份证件,可以包套包 2. 列表能干什么? 存储大量 ...

  9. spring中常用的注解

    使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...

  10. iOS开源库

    项目告一段落,总结一下最近学习到的优秀的三方库,希望能帮到别人. (一)网络中常用的 1.网络库:AFNetworking 2.图片缓存:SDWebImage 3.网络监测  Reachability ...