从0到1打通,Pytest自动化测试框架详细总结,一文概全...


前言

1、什么是单元测试框架?

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

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

测试发现:从多个文件里面去找到我们需要的测试用例。

测试执行:按照一定的顺序和规则去执行测试用例,并生成结果。

测试判断:通过断言判断预期结果和实际结果的差异。

测试报告:统计测试进度,耗时,通过率等数据,并生成测试报告。

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

1)自动化测试框架作用

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

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

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

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

4、Pytest测试框架说明

Pytest是Python的⼀种单元测试框架,全功能且非常成熟,同⾃带的Unittest测试框架类似,相⽐于Unittest框架使⽤起来更简洁,效率更⾼。

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

Pytest是一个非常成熟的Python的单元框架,比Unittest更灵活,容易上手。
Pytest支持参数化配置。

Pytest能够支持简单的单元测试和复杂的功能测试,还可以和Selenium,Requests,Appium结合实现web自动化,接口自动化,APP自动化。

执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败,也支持重复执行失败的case。(跳过用例和reruns失败用例重试)

即:支持测试用例的skip和xfail处理。

Pytest可以很好的和Jenkins进行持续集成。
Pytest可以和allure生成非常美观的测试报告。
在Pytest框架下可以执行Unittest框架的用例。

Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作。

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

5、Pytest框架和Unittest框架区别

1)Unittest

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

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

2)Pytest

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

3)区别

【用例编写规则】

Unittest测试框架:

提供test.cases,test suites,test fixtures,test rurner相关类,让测试更加明确、方便、可控。
测试文件编写前,必须先导入Unittest测试框架,import unittest。
测试类必须继承unittest.TestCase类,且测试类要Test_开头。(可去掉横线,下同)
测试方法要以test_开头。
测试类必须要用unittest.main()方法执行。

Pytest测试框架:

基于Unittest的扩展框架,比Unittest更简洁、更高效。
测试文件必须test_开头。
测试类命名必须以test_开头。
测试方法必须test_开头(函数也一样)。
(规则可自定义)

Unittest:用例格式复杂,不能兼客Pytest用例。
Pytest:用例格式简单,可以兼容Unittest用例。

【用例的前置和后置】

Unittest测试框架:

提供了setUp/tearDowm方法,只能针对所有用例。

Pytest测试框架:

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

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

类里面的setup/teardown:运行在调用方法的前后。

函数前加@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的作用。

【参数化】

Unittest测试框架:结合DDT实现参数化。

Pytest测试框架:直接使用@pytest.mark.parametrize装饰器。

【断言】

Unittest测试框架:可使用提供的assertEqual,assertIn、assertTrue,assertFalse断言方法。

Pytest测试框架:直接使用Python语言内置的assert表达式。

【用例分类执行】

Unittest测试框架:默认执行全部用例,可以通过加载testsuite执行部分模块的用例。

Pytest测试框架:可以通过@pytest.mark来标记测试用例,执行命令前加上参数"-m",即可运行标记的用例。

【失败重运行】

Unittest测试框架:无。

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

【报告】

Unittest测试框架:使用HTMLTestRunnerNew库生成测试报告。

Pytest测试框架:使用pytest-HTML、allure插件生成测试报告。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每个人都有无限的潜力,只是需要我们去发掘和释放。因此,请相信自己的力量,勇敢地迈出每一步,让梦想照亮你的道路,成为你人生中最闪耀的光芒!

无论你现在处于何种境地,都请相信:只要心中有梦想,脚下就有路。所以,请坚定信念,勇敢前行,用汗水和智慧去书写属于自己的辉煌篇章!

人生就像一场马拉松,不在乎起点有多高,只在乎终点是否达到。因此,请坚持不懈地奔跑,用毅力和勇气去实现自己的梦想,让生活因你而精彩!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值