首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用

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

作者头像
用户11288949
发布2025-08-18 08:27:22
发布2025-08-18 08:27:22
24200
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

📚️前言 🌟🌟🌟精彩读导 本次我们将全面剖析接口自动化要点,包括其丰富的数据类型体系、高效的编码方式以及秒级响应的性能奥秘。对于渴望深入理解接口的技术爱好者,这是一次难得的学习机会! 🔍 推荐扩展阅读 了解更多数据库技术干货,访问小编的CSDN技术博客: 👉GGBondlctrl-CSDN博客👈 💖 读者互动 您的每一个👍点赞、⭐收藏和✏️评论,都是我们持续输出优质技术内容的强大动力!期待在评论区看到您的见解

📚️1.自动化pytest框架

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

方式

unittest

pytest

Robot FrameWork

安装方式

无需安装

pip install pytest

pip 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,打开终端,然后输入下面的代码即可;

命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
pip install pytest==8.3.2

然后再输入命令

代码语言:javascript
代码运行次数:0
运行
复制
pip list

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

2.2pytest的运行规则

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

代码语言:javascript
代码运行次数:0
运行
复制
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 开头

代码实例如下:

代码语言:javascript
代码运行次数:0
运行
复制
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的执行的测试用例了;

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

代码语言:javascript
代码运行次数:0
运行
复制
pytest .\pytest_use\test_UsePytest.py -s -v

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

2.4pytest配置文件

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

配置文件的选项:

addopts

指定在命令⾏中默认包含的选项。

testpaths

指定搜索测试的⽬录

python_files

指定发现测试模块时使⽤的⽂件匹配模式

python_classes

指定发现测试类时使⽤的类名前缀或模式

python_functions

指定发现测试函数和⽅法时使⽤的函数名前缀或模式

使用方式如下:

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

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
[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 提供了更 灵活的控制和更强⼤的功能。

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

代码语言:javascript
代码运行次数:0
运行
复制
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框架的使用技巧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📚️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.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档