1、什么是单元测试框架

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。

2、单元测试框架主要做什么

  • 测试发现:从多个文件里面去找到我们需要的测试用例。
  • 测试执行:按照一定的顺序和规则去执行测试用例,并生成结果。
  • 测试判断:通过断言判断预期结果和实际结果的差异。
  • 测试报告:统计测试进度,耗时,通过率等数据,并生成测试报告。

3、单元测试框架和自动化测试框架有什么关系

(1)自动化测试框架作用:

  1. 提高测试效率,降低自动化用例的维护成本。
  2. 减少人工干预,提高测试的准确性,增加代码的重用性。
  3. 核心思想是让不懂代码的人,也能够通过这个框架去实现自动化测试。

(2)Pytest单元测试框架和自动化测试框架的关系

单元测试框架:只是自动化测试框架中的组成部分之一。

pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控、SeleniumRequests的二次封装、报告邮件、断言体系的设计封装等,都是自动化测试框架中的组成部。

4、Pytest测试框架说明

Pytest是Python的一种单元测试框架,全功能且非常成熟,同自带的Unittest测试框架类似,相比于Unittest框架使用起来更简洁,效率更高。

Pytest测试框架,主要有以下几个特点:

  • Pytest是一个非常成熟的Python的单元框架,比Unittest更灵活,容易上手。
  • Pytest支持参数化配置。
  • Pytest能够支持简单的单元测试和复杂的功能测试,还可以和SeleniumRequestsAppium结合实现Web自动化,接口自动化,APP自动化。
  • 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败,也支持重复执行失败的case。(跳过用例和reruns失败用例重试)

    即:支持测试用例的skipxfail处理。
  • Pytest可以很好的和Jenkins进行持续集成。
  • Pytest可以和allure生成非常美观的测试报告。
  • 在Pytest框架下可以执行Unittest框架的用例。
  • Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作。

    并且也可以自定义Pytest插件。

Pytest官方文档:https://docs.pytest.org/en/latest/contents.html

5、Pytest框架和Unittest框架区别

(1)Unittest

Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest框架则是Python语言的标准单元测试框架。

Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。

(2)Pytest

Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。

(3)区别

1)用例编写规则:

  • Unittest测试框架:

    1、提供test.casestest suitestest fixturestest rurner相关类,让测试更加明确、方便、可控。

    2、测试文件编写前,必须先导入Unittest测试框架,import unittest

    3、测试类必须继承unittest.TestCase类,且测试类要Test_开头。(可去掉横线,下同)

    4、测试方法要以test_开头。

    5、测试类必须要用unittest.main()方法执行。
  • Pytest测试框架:

    1、基于Unittest的扩展框架,比Unittest更简洁、更高效。

    2、测试文件必须test_开头。

    3、测试类命名必须以test_开头。

    4、测试方法必须test_开头(函数也一样)。

    (规则可自定义。)
  • 总结:

    Unittest:用例格式复杂,不能兼客Pytest用例。

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

2)用例的前置和后置:

  • Unittest测试框架:

    提供了setUp/tearDowm方法,只能针对所有用例。
  • Pytest测试框架:

    (1)Pytest提供了模块级、函数级、类级、方法级的setup/teardown,比Unittest的setup/tearDowm方法更活。

    • 模块级setup_module/teardown_module:开始于模块始末,全局。
    • 类级setup_class/teardown_class:只在类中前后运行一次(类中)。
    • 函数级setup_function/teardow_function:只对函数用例生效(不在类中)。
    • 方法级setup_method/teardown_method:开始于方法始末(在类中)。
    • 类里面的setup/teardown:运行在调用方法的前后。

      (2)函数前加@pytest.fixtures()装饰器,在测试用例中使用Fixture函数。

      可作用于function\module\class\session中。

      fixture相对于setup/teardown来说的优势,如下:
    • 命名方式灵活,不局限于setup/teardown
    • conftest.py配置里可以实现数共享,无需import就可自动找到配置数据,可供多个.py文件调用。
    • scope="module",可以实现多个.py文件跨文件共享前置。
    • scope="session",可以实现多个.py文件跨文件使用一个session来完成用例。
    • 使用yeild返回,相当于teardown的作用。

3)参数化:

  • Unittest测试框架:结合DDT实现参数化。
  • Pytest测试框架:直接使用@pytest.mark.parametrize装饰器。

4)断言:

  • Unittest测试框架:可使用提供的assertEqualassertInassertTrueassertFalse断言方法。
  • Pytest测试框架:直接使用Python语言内置的assert表达式。

5)用例分类执行:

  • Unittest测试框架:默认执行全部用例,可以通过加载testsuite执行部分模块的用例。
  • Pytest测试框架:可以通过@pytest.mark来标记测试用例,执行命令前加上参数-m,即可运行标记的用例。

6)失败重运行:

  • Unittest测试框架:无。
  • Pytest测试框架:支持用例执行失败重跑,提供了pytest-rerunfailures插件。

7)报告:

  • Unittest测试框架:使用HTMLTestRunnerNew库生成测试报告。
  • Pytest测试框架:使用pytest-HTMLallure插件生成测试报告。

参考:https://www.cnblogs.com/cuitang/p/11635103.html

『德不孤』Pytest框架 — 1、Pytest测试框架介绍的更多相关文章

  1. 『德不孤』Pytest框架 — 2、Pytest的基本使用

    目录 1.Pytest安装 2.Pytest常用插件 3.Pytest运行的第一个例子 4.Pytest框架的运行方式 5.在PyCharm中以Pytest的方式运行测试用例 1.Pytest安装 C ...

  2. 『德不孤』Pytest框架 — 3、Pytest的基础说明

    目录 1.Pytest参数介绍 2.Pytest框架用例命名规则 3.Pytest Exit Code说明 4.pytest.ini全局配置文件 5.Pytest执行测试用例的顺序 1.Pytest参 ...

  3. 『德不孤』Pytest框架 — 4、Pytest跳过测试用例

    目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...

  4. 『德不孤』Pytest框架 — 5、Pytest失败重试

    Pytest失败重试就是,在执行一次测试脚本时,如果一个测试用例执行结果失败了,则重新执行该测试用例. 前提: Pytest测试框架失败重试需要下载pytest-rerunfailures插件. 安装 ...

  5. 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数

    目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...

  6. 『德不孤』Pytest框架 — 11、Pytest中Fixture装饰器(一)

    目录 1.Fixture装饰器的用途 2.Fixture参数说明 3.Fixture装饰器简单应用 4.yield执行后置函数 1.Fixture装饰器的用途 做测试前后的初始化设置,如测试数据准备, ...

  7. 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件

    目录 1.conftest.py文件介绍 2.conftest.py的注意事项 3.conftest.py的使用 4.不同位置conftest.py文件的优先级 5.conftest.py中Fixtu ...

  8. 『德不孤』Pytest框架 — 15、Pytest参数化

    目录 1.Pytest参数化说明 2.Pytest参数化方式 3.parametrize装饰器参数说明 4.Pytest参数化(单个参数) 5.Pytest参数化(多个参数) 6.ids参数说明 1. ...

  9. 『德不孤』Pytest框架 — 6、Mark分组执行测试用例

    目录 1.Pytest中的Mark介绍 2.Mark的使用 3.Mark的注册和使用 4.使用Mark完成失败重试 5.扩展 1.Pytest中的Mark介绍 Mark主要用于在测试用例/测试类中给用 ...

随机推荐

  1. 【Java基础】Java中new对象的过程

    序言 联系我上次写的关于Java内存的文章,对象访问在 Java 语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会却涉及 Java 栈.Java 堆.方法区这三个最重要内存区域之间的关联 ...

  2. 使用Modbus批量读取寄存器地址

    使用modbus单点读取地址是轮询可能会导致效率很低,频繁发送读取报文会导致plc响应时间拉长,批量读取可大大减少数据通信的过程,每次读取完成后,在内存中异步处理返回来的数据数组. modbus 功能 ...

  3. matplotlib 坐标轴刻度能见度问题

    matplotlib 画图时如果图像太大就会挡住了坐标轴,刻度就看不到了.可以利用zorder设置level,level越小越先绘制. 例子: 1 import matplotlib.pyplot a ...

  4. AD设置过孔盖油

    设置所有的过孔盖油 ==> 先选中一个过孔,然后根据对象类型查找相似器件,选中所有的过孔,然后勾选过孔盖油选项即可. 上述这种方法不是太好,每次修改完PCB后都要确认下新增的过孔是否已经过孔盖油 ...

  5. java 注解的几大作用及使用方法详解

    初学者可以这样理解注解:想像代码具有生命,注解就是对于代码中某些鲜活个体的贴上去的一张标签.简化来讲,注解如同一张标签. 在未开始学习任何注解具体语法而言,你可以把注解看成一张标签.这有助于你快速地理 ...

  6. [BUUCTF]REVERSE——[WUSTCTF2020]level3

    [WUSTCTF2020]level3 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加 ...

  7. 再识ret2syscall

    当初学rop学到的ret2syscall,对int 0x80中断了解还不是很深,这次又复习了一遍.虽然很简单,但是还是学到了新东西.那么我们就从ret2syscall开始吧. IDA一打开的时候,就看 ...

  8. 微前端框架 qiankun 技术分析

    我们在single-spa 技术分析 基本实现了一个微前端框架需要具备的各种功能,但是又实现的不够彻底,遗留了很多问题需要解决.虽然官方提供了很多样例和最佳实践,但是总显得过于单薄,总给人一种&quo ...

  9. CF812A Sagheer and Crossroads 题解

    Content 有一个十字路口,从最下面的部分开始,逆时针依次标号为 \(1,2,3,4\).每个部分有四个灯,分别为左转的灯.直行的灯.右转的灯以及人行通道灯(只有可能为红灯和绿灯).如果某个部分的 ...

  10. CF78B Easter Eggs 题解

    Content 有一个有 \(n\) 个点的环,你可以将其染成一种颜色.一共有 \(7\) 种颜色(R,O,Y,G,B,I,V)可以选择.你的染色方案应该满足下面的要求: 每一个点都要被染色,且 \( ...