python使用pytest接口自动化测试的使用

yizhihongxing
  1. 简述pytest与unittest之间的区别

pytest是一种成熟、全功能的Python测试框架,相较于unittest,pytest提供了更加丰富的功能和更加容易阅读的测试报告输出。与unittest相比,pytest的最大优点是可以自动发现和执行测试用例,可以非常方便地进行参数化,并支持测试用例级别的重试等功能。

  1. 安装pytest

使用pip安装pytest:

pip install -U pytest

安装完毕后,我们可以使用pytest --version命令来检查pytest是否正确安装。

  1. 编写测试用例并运行

在Python项目里,所有的测试用例文件都应该放在tests目录下面,pytest会自动发现并执行这些测试用例。编写测试用例时,需要注意用“test_”开头的测试函数命名规范。以下是一个示例:

# tests/test_example.py

def test_addition():
    assert 1 + 2 == 3

def test_subtraction():
    assert 4 - 2 == 2

在运行测试之前,我们要确保需要测试的函数已经被写好并且运行成功。在命令行中,进入项目根目录,运行以下命令:

pytest

运行后,会自动发现并运行tests目录下的所有测试用例,测试报告也会输出到控制台中。下面是一个简单的示例输出:

======= test session starts ========
platform linux -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: /code
collected 2 items                                                      

tests/test_example.py ..                                            [100%]

======= 2 passed in 0.01s ========
  1. 参数化测试

pytest支持参数化测试,即在同一个测试函数中为不同的输入提供不同的期望输出。我们可以使用pytest.mark.parametrize()装饰器来实现参数化测试的功能。

以下是一个示例:

# tests/test_example.py

import pytest

@pytest.mark.parametrize("a, b, expected", [
    (1, 2, 3),
    (3, 4, 7),
    (-1, -2, -3),
])
def test_addition_with_parameters(a, b, expected):
    assert a + b == expected

这里引用了pytest的mark.parametrize装饰器,将三组测试数据(a、b、expected)作为参数传递给测试用例test_addition_with_parameters。最终,pytest会自动运行三次测试用例,并将测试报告统计在一起。

  1. 断言assert的使用

pytest支持多种断言方式, assert关键字是最常见的一种方式,他检查表达式是否为真,如果表达式为假,则抛出AssertionError异常,并且pytest会将此测试用例标记为失败。以下是一个示例:

# tests/test_example.py

def test_addition_with_assert():
    c = 1 + 2
    assert c == 4

这个测试用例的期望结果是1 + 2 = 3,但是实际结果却是4。当pytest执行这个测试用例时,会抛出AssertionError异常,并标记此测试用例为失败。

以上就是关于python使用pytest自动化测试的攻略,建议开发者尽早学习和使用pytest, 将会大大提高我们的工作效率,并且避免一系列的人为错误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用pytest接口自动化测试的使用 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python 时间处理datetime实例

    Python 中的 datetime 模块提供了用于处理日期和时间的类,其中最重要的类是 datetime 类。datetime 类的实例可以在计算和比较日期和时间时使用。在本文中,我们将介绍如何在 Python 中使用 datetime 类进行时间处理。 获取当前时间 datetime 模块提供了 datetime 类,它可以用于表示一个特定的日期和时间。…

    python 2023年6月2日
    00
  • Python 处理带有 \u 的字符串操作

    当字符串中包含转义字符 \u,表示这是一个unicode字符,需要进行相应的处理。Python提供了多种处理unicode字符的方法,下面详细介绍如何处理带有 \u 的字符串。 方法1:使用Python内置的encode和decode方法 将带有 \u 的unicode字符串编码成utf-8格式 s = ‘\u4e2d\u56fd’ s_utf8 = s.e…

    python 2023年5月20日
    00
  • 关于Python内存分配时的小秘密分享

    关于Python内存分配时的小秘密分享 在Python编程中,内存管理是一个非常重要的主题。Python内存分配的原理和机制对于程序员而言非常重要。在本文中,我们将探讨Python的内存分配机制,并分享一些小秘密。 Python内存管理机制 Python使用自动内存管理机制,也就是自动垃圾回收机制。在Python程序中,当一个对象不再被程序引用时,就会自动被…

    python 2023年5月14日
    00
  • 详解python3类型注释annotations实用案例

    详解Python3类型注释(Annotations)实用案例 什么是Python3类型注释 在Python 3 中,可以使用类型注释来提示变量的类型,这是一个可选的特性,不影响代码的执行。类型提示不会影响变量的行为,但是可以帮助代码的可读性和可维护性。 语法格式如下: variable: type = value 其中, variable 是变量名 type…

    python 2023年5月13日
    00
  • 如何使用 Azure Python SDK 检查 VM 的磁盘大小?

    【问题标题】:How can I check the disk size of a VM with Azure Python SDK?如何使用 Azure Python SDK 检查 VM 的磁盘大小? 【发布时间】:2023-04-05 00:27:01 【问题描述】: 当我使用 Azure 创建 VM 时,例如标准 A6,它带有 2 个已安装的单元,一个…

    Python开发 2023年4月6日
    00
  • Python递归函数定义与用法示例

    下面是关于Python递归函数定义与用法示例的完整攻略: 什么是递归函数 递归函数指的是在函数定义中调用自身的这个过程。使用递归函数,可以将问题或任务拆分成多个同样的子问题或任务,并不断重复这个过程,直到子问题或任务处理结束,最终得到问题或任务的解决方案。 Python中递归函数的定义 在Python中,递归函数的定义非常简单,只需要在函数体内部调用自身即可…

    python 2023年6月5日
    00
  • Python HTTP库 requests 的简单使用详情

    以下是关于Python HTTP库requests的简单使用详情的攻略: Python HTTP库requests的简单使用详情 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接响应。以下是Python HTTP库requests的简单使用详情的攻略: 发送GET请求 以下是使用requests库发送GET请求的示例: impo…

    python 2023年5月14日
    00
  • 如何获取我以编程方式声明的 Python 类的源代码?

    【问题标题】:How do I get the source for a Python class I declared programmatically?如何获取我以编程方式声明的 Python 类的源代码? 【发布时间】:2023-04-02 02:20:01 【问题描述】: 我正在尝试使用inspect.getsource() 来获取这样定义的类的源代…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部