新手入门:pytest接口自动化测试框架

本文是一篇 Pytest 接口自动化测试框架的入门指南,帮助初学者掌握 Pytest 接口测试框架的使用方法及实践技巧。

用 Apifox,节省研发团队的每一分钟

新手入门:pytest接口自动化测试框架

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

Python 的自动化测试框架

测试 是最基本的测试单位,而自动化测试则是使用机器进行批量、频繁、重复地去做测试,而 自动化测试框架就是对自动化测试代码的一个封装,优点有很多:

  • 大大提高测试的效率
  • 复用性非常高,大大减少重复工作
  • 覆盖面非常广,测试的范围大
  • 不需要人工干预,降低出错率
pytest接口自动化测试框架
Python 

Pytest

Pytest 是什么

Pytest是一个Python测试框架,可用于编写和执行各种类型的软件测试,如单元测试、集成测试、端到端测试和功能测试,它主要用于API测试,但也可以测试数据库、UI和其他组件。它具有参数化测试、固定装置、断言重写和并行测试等功能。可以使用命令 pip-install-pytest 进行安装,也可以使用命令 pytest --version 进行验证。

Pytest 是什么
Pytest 

Pytest 的优点可以总结为:

  • Pytest 能够同时执行多个测试用例,从而缩短执行时间
  • Pytest 能够在执行过程中跳过一组测试方法中的一个测试方法
  • Pytest 是免费的
  • Pytest 既快速又易于学习

Python 使用 Pytest 做自动化测试

Pytest 的安装

我们需要使用 pip 对 Pytest 进行安装。

pip install -U pytest

安装完之后,在终端输入,如果显示版本号,则说明安装成功。

pytest --version

Pytest 用例编写规范

  • 被测试的文件,必须以 test_ 开头或 _test 结尾;
  • Pytest 运行的时候,会寻找 test__test 的文件,把他们当做测试文件进行测试;
  • 测试的类名,需要以 Test 开头,并且不能有 init 函数,不然会触发警告:ytestCollectionWarning: cannot collect test class 'TestXXX'
  • 测试的方法函数要以 test_ 开头;
  • 使用 assert 进行断言。

运行命令

pytest -k "类名"
pytest -k "方法名"
pytest -k "类名 and not 方法名"

运行

Pytest 提供了多种运行模式,可以只运行某个模块,也可以运行某个模块下的某个方法。

pytest 文件名.py
pytest 文件名.py::类名
pytest 文件名.py::类名::方法名

例子

我们可以编写一段测试代码,进行测试,我们需要创建一个 test_ 开头的 .py 文件。

在一个test开头的py文件里面,编写一下脚本:
def setup_module():
    print('\n 这是setup_module方法,只执行一次,当有多个测试类的时候使用')
def teardown_module():
    print('这是 teardown_module方法,只执行一次,当有多个测试类的时候使用')
def teardown_module():
    print('这是 teardown_module方法,只执行一次,当有多个测试类的时候使用')
def setup_function():
    print('这是 setup_function方法,只执行一次,当有多个测试类的时候使用')
def teardown_function():
    print('这是 teardown_function方法,只执行一次,当有多个测试类的时候使用')
def test_five():
    print('this is test_five method')
def test_six():
    print('this is test_six method')
class TestPytest01:
 
    def setup_class(self):
        print('调用了setup_class1方法')
 
    def teardown_class(self):
        print('调用了teardown_class1方法')
 
    def setup_method(self):
        print('执行测试方法前的setup1操作')
 
    def teardown_method(self):
        print('执行测试方法后的teardown1操作')
 
    def test_one(self):
        print('this is test_one method')
 
    def test_two(self):
        print('this is test_two method')
 
    def setup(self):
        print('this is setup 方法')
    def teardown(self):
        print('this is teardown 方法')
 
class TestPytest02:
    def setup_class(self):
        print('调用了setup_class2方法')
 
    def teardown_class(self):
        print('调用了teardown_class2方法')
 
    def setup_method(self):
        print('执行测试方法前的setup2操作')
 
    def teardown_method(self):
        print('执行测试方法后的teardown2操作')
 
    def test_three(self):
        print('this is test_three method')
 
    def test_four(self):
        print('this is test_four method')

运行,得到的结果为:

Pytest 是什么

控制用例顺序

如果想要制定用例的顺序,可以使用 pytest-order 插件,并结合装饰器 @pytest.mark.run(order=num)

pip install pytest-ordering

我们可以编写一段代码来验证。

import pytest
class TestPytest:
    @pytest.mark.run(order=-2)
    def test_03(self):
        print('test_03')
 
    @pytest.mark.run(order=-3)
    def test_01(self):
        print('test_01')
 
    @pytest.mark.run(order=4)
    def test_02(self):
        print('test_02')

执行的结果为:

Pytest 是什么

使用 Apifox 测试 Python 接口

上面讲的是使用 Pytest 测试 Python 写的一些函数方法,那如果是 Python 写的一些 API,应该怎么去测呢?

涉及到 API 的测试,我推荐是 Apifox ,它是集测试、文档、mock 于一身的超级好用的 API 调试工具。

比如我已经使用 Python 写了一个简单的接口:

/api/test/python

我们来使用 Apifox 测试一下吧~

创建请求

我们需要创建一个 API 请求,用来对我们刚刚写的那个 API 进行请求,填入:

  • 请求路径
  • 请求方法
  • 请求名
Apifox 测试 Python 接口
创建请求

设置断言

接着我们点开后置脚本这一项,然后选择自定义脚本,Apifox 为我们提供了可视化的脚本选项。

Apifox 设置断言
可视化断言

我们点击右边的 Apifox 为我们提供的现成的脚本命令,我们预期是返回的 code 是 200。

Apifox 现成的脚本命令
现成的脚本命令

设置完断言脚本,点击 保存 按钮。

运行调试

到运行页,点击 发送,可以看到响应结果,以及断言成功通过的提示。

apifox 运行调试
运行调试

关于Apifox

欢迎体验一下,完全免费的哦:在线使用 Apifox

Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。

Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。

个人使用体验还是不错的,推荐使用~

Apifox 接口调试工具

知识扩展: