当前位置: 首页 > ds >正文

【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用


📚️前言

🌟🌟🌟精彩读导

本次我们将全面剖析接口自动化要点,包括其丰富的数据类型体系、高效的编码方式以及秒级响应的性能奥秘。对于渴望深入理解接口的技术爱好者,这是一次难得的学习机会!

🔍 推荐扩展阅读

了解更多数据库技术干货,访问小编的CSDN技术博客: 👉GGBondlctrl-CSDN博客👈 

💖 读者互动

您的每一个👍点赞、⭐收藏和✏️评论,都是我们持续输出优质技术内容的强大动力!期待在评论区看到您的见解

目录

​编辑📚️前言

📚️1.自动化pytest框架

📚️2.pytest使用

2.1pytest的安装

2.2pytest的运行规则

2.3pytest的命令

2.3.1pytest -s

2.3.2pytest -v

2.3.3pytest test_module.py

2.4pytest配置文件

2.5前后置

📚️3.总结

📚️1.自动化pytest框架

以下是几种接口测试的方式

方式unittestpytestRobot FrameWork
安装方式无需安装pip install pytestpip install framework
使用基于类Testcase面向对象,无样板关键字驱动
断言方式self.assertEqual() 等原生的assert关键字断⾔(如 Should Be
Equal
参数化支持需 subTest 或第三⽅库内置
@pytest.mark.parametrize
数据驱动( Test
Template
插件生态少(依赖扩展库如
HTMLTestRunner

丰富(如 pytest-html 、

pytest-xdist 、 allure pytest )

⼀般(需安装额外库如
RequestsLibrary

为什么选pytest?

• 简单易⽤: pytest 的语法简洁清晰,对于编写测试⽤例⾮常友好,⼏乎可以在⼏分钟内上⼿。
• 强⼤的断⾔库: pytest 内置了丰富的断⾔库,可以轻松地进⾏测试结果的判断。
• ⽀持参数化测试: pytest ⽀持参数化测试,允许使⽤不同的参数多次运⾏同⼀个测试函数,这提⾼了测试效率。
• 丰富的插件⽣态系统: pytest 有着丰富的插件⽣态系统,可以通过插件扩展各种功能,⽐如覆盖率测试、测试报告⽣成(如 pytest-html 插件可以⽣成完美的HTML测试报告)、失败⽤例重复执⾏(如 pytest-rerunfailures 插件)等。此外, pytest 还⽀持与selenium、
requests、appinum等结合,实现Web⾃动化、接⼝⾃动化、App⾃动化测试。
• 灵活的测试控制: pytest 允许跳过指定⽤例,或对某些预期失败的case标记成失败,并⽀持重复执⾏失败的case。

📚️2.pytest使用

2.1pytest的安装

打开pycharm,打开终端,然后输入下面的代码即可;

命令如下:

pip install pytest==8.3.2

然后再输入命令

pip list

此时就可以看到我们下载的包了

2.2pytest的运行规则

在下载好我们的包之后,编写以下代码:

def test_01():print("test_01")#对于文件名.py必须以test_开头或者_test结尾
#对于类名必须Test名字开头
#对与方法名字必须以test开头def test_02():print("this is test_02 function")
#可以通过 -s -v进行详细输出
#pytest ./pytest_use/test_UsePytest.py::test_02:实现指定的测试方法
#也可以通过配置执行文件实现pytest命令简写

我们可以看到我们编写的方法上,有一个运行的标志:

那么为什么会有运行的标志呢?

由于 pytest 的测试收集机制,测试类中不可以定义 __init__ ⽅法。 pytest 采⽤⾃动发现机制
来收集测试⽤例。它会⾃动实例化测试类并调⽤其所有以 test 结尾的⽅法作为测试⽤例。

那么这里是存在识别自动发现机制的规则的;

1. ⽂件名必须以 test_ 开头或者 _test 结尾
2. 测试类必须以 Test 开头,并且不能有 __init__ ⽅法。
3. 测试⽅法必须以 test 开头

代码实例如下:

def test_01():print("test_01")#对于文件名.py必须以test_开头或者_test结尾
#对于类名必须Test名字开头
#对与方法名字必须以test开头def test_02():print("this is test_02 function")
#可以通过 -s -v进行详细输出
#pytest ./pytest_use/test_UsePytest.py::test_02:实现指定的测试方法
#也可以通过配置执行文件实现pytest命令简写
class Test:def test_03(self):print("this is test_03 function");

那么我们在终端输入命令pytest:

可以看到我们通过了三个测试用例,那么只就是pytest运行规则了;

如果测试类中定义了 __init__ ⽅法,那么当 pytest 实例化该类时, __init__ ⽅法会被调⽤,这可能会掩盖测试类的实际测试逻辑

2.3pytest的命令

pytest的命令有很多,我这里讲几个主要使用的命令:

pytest :在当前⽬录及其⼦⽬录中搜索并运⾏测试。
pytest -v: 增加输出的详细程度。
pytest -s: 显⽰测试中的 print 语句。
pytest test_module.py: 运⾏指定的测试模块。
pytest test_dir/ :运⾏指定⽬录下的所有测试

2.3.1pytest -s

就是增加我们测试用例中的打印语句:

可以看到我们的打印的语句;

2.3.2pytest -v

详细说明我们的执行的测试用例的位置打印:

此时我们可以结合两者进行输出结果:

2.3.3pytest test_module.py

就是指定文件进行输出,这里我们有四个测试用例:

在2中有一个,在1中有三个测试用例:

指定执行的测试用例或者文件地址,那么就可以指定pytest的执行的测试用例了;

那么总结上述所有的的命令后:

pytest .\pytest_use\test_UsePytest.py -s -v

那么如果命令很长,我每次运行都要这样去输入命令吗?不然这里就涉及到我们pytest的配置文件了~~~

2.4pytest配置文件

这里的配置文件和在mysql中的. cnf差不多:

配置文件的选项:

addopts 指定在命令⾏中默认包含的选项。
testpaths 指定搜索测试的⽬录
python_files指定发现测试模块时使⽤的⽂件匹配模式
python_classes指定发现测试类时使⽤的类名前缀或模式
python_functions指定发现测试函数和⽅法时使⽤的函数名前缀或模式

使用方式如下:

在当前的目录下创建pytest.ini文件,就是pytest的配置文件

代码如下:

[pytest]
addopts = -v -s
testpaths = ./pytest_use
;这里就是指定当前目录
python_files = test_UsePytest.py
python_classes = Test*
python_functions = test_04

那么我们这里指定的地址和方法就是:

那么我们只需要在命令行输入pytest命令就可以指哪里打哪里;

2.5前后置

在测试框架中,前后置是指在执⾏测试⽤例前和测试⽤例后执⾏⼀些额外的操作,这些操作可以⽤于设置测试环境、准备测试数据等,以确保测试的可靠性

setup_method 和 teardown_method :这两个⽅法⽤于类中的每个测试⽅法的前置和后置操
作。
setup_class 和 teardown_class :这两个⽅法⽤于整个测试类的前置和后置操作。
fixture :这是 pytest 推荐的⽅式来实现测试⽤例的前置和后置操作。 fixture 提供了更
灵活的控制和更强⼤的功能。

这里小编主要演示一下前面两个

class Test:def setup_method(self):print("setup_method")def test_03(self):print("this is test_03 function")def test_04(self):print("this is test_04 function")def teardown_method(self):print("teardown_method")

这里运行后的输出:

注意了,这里产生效果是在我们的类中

当然还有对于class生效的情况:

可以看到这里是每个类之前执行以及每个类之后执行一次;具体的细节大家可以自己练练对比对比

📚️3.总结

本文全面介绍了pytest框架在接口自动化测试中的应用。首先对比了unittest、pytest和RobotFramework三种测试框架的优缺点,重点阐述了选择pytest的原因:语法简洁、断言丰富、参数化支持、插件生态完善等核心优势。随后详细讲解了pytest的安装配置、运行规则(文件名/类名/方法名命名规范)、常用命令参数(-v/-s等)以及通过pytest.ini文件简化命令操作的方法。最后介绍了测试前后置处理的实现方式,包括setup/teardown方法和fixture机制。文章提供了丰富的代码示例,帮助读者快速掌握pytest框架的使用技巧。

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

       😊😊  期待你的关注~~

http://www.xdnf.cn/news/17662.html

相关文章:

  • Jotai:React轻量级状态管理新选择
  • Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02
  • SQL三剑客:DELETE、TRUNCATE、DROP全解析
  • CentOS7.9 离线安装mysql数据库
  • CPP继承
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • 数学建模:控制预测类问题
  • 全面了解机器语言之kmeans
  • 010601抓包工具及证书安装-基础入门-网络安全
  • 【Matplotlib】中文显示问题
  • 企业级WEB应用服务器TOMCAT — WEB技术详细部署
  • 正点原子esp32s3探测土壤湿度
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • Effective C++ 条款34:区分接口继承和实现继承
  • 数据库面试题集
  • DFT的几点理解(二)
  • 计算二分类误差时的常见错误及解决方案
  • 农经权二轮延包—已有软件与后续研究
  • Spring之【详解AOP】
  • NLP 2025全景指南:从分词到128专家MoE模型,手撕BERT情感分析实战(第四章)
  • scanpy单细胞转录组python教程(三):单样本数据分析之数据标准化、特征选择、细胞周期计算、回归等
  • 制动电阻烧损记录学习
  • Spark执行计划与UI分析
  • JVM调优好用的内存分析工具!
  • jvm有哪些垃圾回收器,实际中如何选择?
  • 工业相机选择规则
  • leetcode经典题目——单调栈
  • 机器学习第八课之K-means聚类算法
  • Android 16 KB页面大小适配的权威技术方案总结