一、pytest的优势

pytest是基于unittest之上的单元测试框架,它的优势如下:

  • 自动发现测试模块和测试方法
  • 断言使用 assert + 表达式
  • 可以设置测试会话级(session)、模块级(module)、类级(class)、函数级(function)的fixture来共享测试用例的前置和后置
  • 有丰富的插件库,目前已经700+,pytest插件地址:http://plugincompat.herokuapp.com/

二、与unittest的对比

1.用例设计规则

  • unittest

    • 测试类必须继承unittest.TestCase
    • 测试函数必须以"test_"开头
    • 使用defaultTestLoader.descover()加载测试用例时,测试模块(py文件)名称要以test_开头
  • pytest
    • 测试模块文件的文件名必须以"test_"开头或者以"_test"结尾
    • 测试类命名必须以"Test"开头
    • 测试函数名必须以"test"开头
    • 测试类里面不能使用"__init__"方法

2.断言对比

  • unittest断言

    • assertEqual(a, b)  判断 a 和 b 是否相等
    • assertNotEqual(a, b)  判断 a 不等于 b
    • assertTrue(a)  判断 a 是否为 Ture
    • assertFalse(a)  判断 a 是否为 False
    • assertIn(a, b)  a 包含在 b 里面
    • asserNotIn(a, b)  a 不包含在 b 里面
    • ......
  • pytest断言
    • assert + 表达式

3.用例前置和后置

  • unittest前置和后置

    • 通过setup每个用例执行前执行,teardown每个用例执行后执行
    • 通过setupclass类里面所有用例执行前执行,teardownclass类里面所有用例执行后执行
  • pytest前置和后置
    • 会话级别:session,整个测试执行会话全部用例开始前执行/全部用例执行完后执行
    • 模块级别:module,只对模块级别生效,整个.py全部用例开始前执行/全部用例执行完后执行
    • 类级别:class,只对类级别生效,整个测试类全部用例开始前执行/全部用例执行完后执行
    • 函数级别:function,只对函数级别生效,每个用例开始前和结束后执行一次

4.参数化

  • unittest参数化

    • 结合ddt模块,在类上面使用@ddt装饰,测试用例的方法上使用@data()来来实现数据驱动
  • pytest参数化
    • 通过装饰器@pytest.mark.parametrize来实现数据驱动

5.生成报告方式

  • unittest

    • 通过HTMLTestRunner生成
  • pytest
    • 通过pytest-html生成html格式报告
    • 通过与allure集成生成优美的allure报告

pytest框架与unittest框架的对比的更多相关文章

  1. unittest单元测试框架之unittest 框架的总结2(八)

    unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ ...

  2. unittest单元测试框架之unittest 框架的总结(七)

    1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 ...

  3. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

  4. pycharm中脚本执行的3种模式(unittest框架、pytest框架、普通模式)

    背景知识,某次使用HTMLTestRunner的时候,发现一直都无法导出报告,后来查询资料发现了一些坑,现在整理一下来龙去脉. 一:pycharm默认的是pytest框架去执行unittest框架的测 ...

  5. python学习笔记之——unittest框架

    unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...

  6. 【Pytest】python单元测试框架pytest简介

    1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍 ...

  7. 国内常用的三种框架:ionic/mui/framework7对比

    国内常用的三种框架:ionic/mui/framework7对比 原文连接:http://zhihu.com/question/19558750/answer/91179040

  8. selenium-webdriver(python) (十六) --unittest 框架

    学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...

  9. Selenium2+python自动化30-引入unittest框架

    from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.com ...

随机推荐

  1. getOutputStream() has already been called for this response 从了解到解决

    一.背景说明        在tomcat的localhost.log日志中时长见到 getOutputStream() has already been called for this respon ...

  2. HttpClient发起Http/Https请求工具类

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  3. 201871010113-刘兴瑞《面向对象程序设计(java)》第十七周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  4. numpy函数查询手册

    写了个程序,对Numpy的绝大部分函数及其说明进行了中文翻译. 原网址:https://docs.scipy.org/doc/numpy/reference/routines.html#routine ...

  5. 08. Go 语言包(package)

    Go 语言包(package) Go 语言的源码复用建立在包(package)基础之上.Go 语言的入口 main() 函数所在的包(package)叫 main,main 包想要引用别的代码,必须同 ...

  6. 一个适合于.NET Core的超轻量级工作流引擎:Workflow-Core

    一.关于Workflow-Core 近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完 ...

  7. lxml导入

    通常的导入方式 from lxml import etree python有自带的ElementTree库,但lxml在其基础上新增了特有的功能 如果代码仅使用ElementTree API,不依赖于 ...

  8. mySql中Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

    报错信息 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.id' ...

  9. Python 爬虫从入门到进阶之路(四)

    之前的文章我们做了一个简单的例子爬取了百度首页的 html,我们用到的是 urlopen 来打开请求,它是一个特殊的opener(也就是模块帮我们构建好的).但是基本的 urlopen() 方法不支持 ...

  10. 案例:使用dbms_xplan.display_cursor无法获取执行计划

    案例:使用dbms_xplan.display_cursor无法获取执行计划 环境:RHEL 6.5 + Oracle 11.2.0.4 在一次测试中发现使用dbms_xplan.display_cu ...