【接口自动化】初识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框架
以下是几种接口测试的方式
方式 | 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,打开终端,然后输入下面的代码即可;
命令如下:
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框架的使用技巧。
🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!
💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。
😊😊 期待你的关注~~