Pytest框架 — 01、Pytest测试框架介绍

1、什么是单元测试框架

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

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

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

3、单元测试框架和自动化测试框架的关系

单元测试框架是自动化测试框架的组成部分之一。
PO设计模式、日志监控、数据驱动、关键字驱动、Selenium、Requests的二次封装、断言体系封装、邮件通知等,都是自动化测试框架中的组成部分。

4、Pytest测试框架说明

Pytest是基于Python的一种单元测试框架,同自带的Unittest测试框架类似,但是相对更简洁高效。

Pytest测试框架的特点:

  • 容易上手,文档丰富、拥有很多强大的第三方插件
  • 支持参数化配置
  • 支持跳过测试用例
  • 支持重复运行失败的测试用例
  • 方便与Jenkins进行持续集成
  • 兼容Unittest框架的测试用例
  • 可与Selenium,Requests,Appium结合实现Web自动化,接口自动化,App自动化

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

5、Pytest框架与Unittest框架的区别

Unittest是Python自带的单元测试框架,Pytest是基于Unittest开发的第三方单元测试框架,相对Unittest更加灵活方便。
区别:

Unittest Pytest 备注
用例编写规则 1、必须首先导入unittest
2、测试类必须继承unittest.Testcase
3、测试方法必须以test_开头
1、测试文件名必须以test_开头或_test结尾
2、测试方法必须以test_开头
3、测试类必须以Test开头
用例的分组执行 默认执行全部用例,可通过测试套件testsuite部分执行 @pytest.mark来标记类和方法,执行时加入参数("-m")可以只运行标记的类和方法
eg: pytest -m "smoke and back"
pytest -m 可执行多个标记
用例的前后置 提供setUp/tearDown,setUpClass/tearDownClass方法,针对测试函数和类中测试方法 1、固定Fixture
提供模块级、函数级、类级、方法级的setup/tearDown
1)模块级setup_module/teardown_module:开始于模块始末
2)函数级setup_function/teardown_function:只针对函数用例生效,因为兼容unittest所以也可简写为setup/teardown
3)类级setup_class/teardown_class:只在类中前后执行一次
4)方法级setup_method/teardown_method:在类中每个方法前后执行一次,也可以在类中简写为setup/teardown,效果相同

2、自定义Fixture
1)在函数上面通过装饰器@pytest.fixture()来实现自定义前后置
2)通过scope参数实现分级session、module、class、function,效果与固定Fixture相同
3)通过autouse参数autouse=True搭配scope参数实现自动前后置
4)使用yeild返回做后置,相当于teardown
自定义fixture相对固定fixture的优势:
1、命名方式更灵活,不局限于setup/teardown
2、可通过conftest.py配置多测试用例文件共享前后置
3、不需要导入conftest,pytest用例会自动查找
4、scope="session"可实现多个测试用例文件跨文件前后置
参数化 使用ddt 或者 第三方库parameterized 直接使用@pytest.mark.parametrize装饰器
断言 使用unittest的断言方法:
assertEqual、assertIn、assertTrue、assertFalse
eg:
self.assertEqual(a, 2)
使用python内置断言方法,直接assert + 表达式
eg:
assert a == 2
各有优势:
- pytest直接使用assert+表达式更简单清洗;
- unittest的断言方法支持msg参数,即断言失败可以提示;
eg:
self.assertEqual(a, 2, msg="不相等")
失败重试 提供pytest-rerunfailures插件
报告 HTMLTestRunner第三方库 提供pytest-html、allure插件

参考
https://www.cnblogs.com/Durant0420/p/15034839.html
https://www.cnblogs.com/liuyuelinfighting/p/15778190.html

posted @ 2022-08-09 10:59  睡觉大王Risen  阅读(263)  评论(0编辑  收藏  举报