一、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. 并发编程~~~协程~~~greenlet模块, gevent模块

    一 协程 1. 协程: 单线程下的并发,又称微线程,纤程.协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. 并发真正的核心: 切换并且保持状态. 开启协程并发的执行,自己的程序把控着C ...

  2. [Go] 使用net包作为tcp客户端读取http

    1.tcp的客户端,并且直接读取http协议的全部内容,每次读取4096字节,直到最后一个字节是\n并且读取的长度小于4096 conn, err := net.Dial("tcp" ...

  3. [PHP] 接口增加recaptcha行为验证

    需要先翻墙创建一个谷歌账户和创建recaptcha验证的网站域名,获取到两个secrecthttps://www.google.com/recaptcha/admin 前端增加html和js代码,例如 ...

  4. Linux下的find命令2

    :续linux下的find命令 Linux/Unix下非常有用的find命令的用法 功能简述:find(查找)主要沿着文件层次(目录)结构依次向下遍历,匹配符合条件的文件,可以附带执行相应的操作选项, ...

  5. BITCTF-MISC

    MISC 以此笔记来记录本菜鸡做misc的历程 签到85 首先看题 提示base85 打开kali,使用python的base64库来解码(内有base85解码) (其实只要输python3即可 我还 ...

  6. log4j日志打印的配置文件简单使用

    log4j.properties #将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码 log4j.rootLogger=DEBUG,c ...

  7. Java 中 PO 与 VO 的区别

    什么是PO PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外, ...

  8. C#基础知识1-深入理解值类型和引用类型

    C#值类型和引用类型这个概念在刚学习的时候应该就知道了.但是我们并没有深入的去理解它.越是基础知识其实才是最有用的.对代码的优化,代码质量的提升都有帮助.通过整理本文章,对很多知识也起到了巩固的作用吧 ...

  9. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  10. Supply Initial Data提供初始数据 (EF)

    Open the Updater.cs (Updater.vb) file, located in the MySolution.Module project's Database Update fo ...