当前位置:首页 > 科技  > 软件

从小白到测试专家:掌握Pytest的实用技巧和优秀实践

来源: 责编: 时间:2023-11-08 17:04:02 487观看
导读pytest是一个功能丰富且易于使用的Python测试框架,它建立在Python标准库的unittest模块之上,提供了更简洁、灵活和可读性强的测试代码编写方式。下面,我将按照步骤引导您学习pytest。步骤1:安装pytest首先,您需要安装pytes

ACu28资讯网——每日最新资讯28at.com

pytest是一个功能丰富且易于使用的Python测试框架,它建立在Python标准库的unittest模块之上,提供了更简洁、灵活和可读性强的测试代码编写方式。下面,我将按照步骤引导您学习pytest。ACu28资讯网——每日最新资讯28at.com

步骤1:安装pytest

首先,您需要安装pytest。您可以使用pip包管理器来安装它。打开终端(或命令提示符)并执行以下命令:ACu28资讯网——每日最新资讯28at.com

pip install pytest

步骤2:编写测试函数

在学习如何编写测试之前,让我们先了解一下pytest测试的基本结构。ACu28资讯网——每日最新资讯28at.com

在pytest中,测试函数以test_开头,例如test_addition()。这些函数是用来测试代码的不同部分,每个测试函数应该只关注一个特定的功能或行为。ACu28资讯网——每日最新资讯28at.com

让我们创建一个简单的示例来说明。在您的项目目录下,创建一个名为test_calculator.py的文件,并在其中编写以下代码:ACu28资讯网——每日最新资讯28at.com

def add(a, b):    return a + bdef test_addition():    result = add(3, 5)    assert result == 8

在上面的示例中,我们定义了一个add()函数来执行加法运算,并编写了一个test_addition()函数来测试这个加法函数。在测试函数中,我们调用add(3, 5)并使用assert语句来验证结果是否等于8。ACu28资讯网——每日最新资讯28at.com

步骤3:运行测试

现在,我们已经编写了一个简单的测试函数,让我们运行它并查看结果。在终端中,导航到项目目录,并执行以下命令:ACu28资讯网——每日最新资讯28at.com

pytest

pytest将会自动查找项目中以test_开头的测试函数,并执行它们。您应该会看到一个类似于以下内容的输出:ACu28资讯网——每日最新资讯28at.com

============================= test session starts ==============================platform linux -- Python 3.x.y, pytest-x.y.z, py-x.y.z, pluggy-x.y.zrootdir: /path/to/your/projectcollected 1 item                                                               test_calculator.py .                                                      [100%]============================== 1 passed in 0.01s ===============================

从上面的输出中,我们可以看到测试会话开始并显示了平台信息,然后显示了一个进度条,最后显示了测试结果。在这种情况下,一个测试通过,没有任何错误或失败。ACu28资讯网——每日最新资讯28at.com

步骤4:使用更多的断言

在步骤2中的示例中,我们只使用了一个简单的assert语句来断言测试结果。然而,pytest提供了许多其他有用的断言函数,让我们可以编写更复杂的断言逻辑。ACu28资讯网——每日最新资讯28at.com

例如,我们可以使用assert语句来检查值是否相等、不相等、大于、小于等等。此外,pytest还提供了许多其他的断言函数,如assert_raises()用于检查异常,assert_in()用于检查元素是否在集合中等等。ACu28资讯网——每日最新资讯28at.com

以下是一些常用的断言函数示例:ACu28资讯网——每日最新资讯28at.com

def test_assertions():    assert 5 == 5  # 检查相等    assert 10 != 5  # 检查不相等    assert 3 < 10  # 检查小于    assert 20 > 10  # 检查大于    assert 5 <= 5  # 检查小于等于    assert 10 >= 5  # 检查大于等于    assert_raises(ValueError, int, 'string')  # 检查是否引发特定异常    assert 'hello' in 'hello world'  # 检查子字符串是否在字符串中    assert_in(3, [1, 2, 3, 4, 5])  # 检查元素是否在列表中

步骤5:测试夹具(Fixtures)

测试夹具是pytest中非常强大且常用的概念。它们提供了一种方便的方式来准备测试环境、共享测试数据和执行重复的操作。ACu28资讯网——每日最新资讯28at.com

在pytest中,使用@pytest.fixture装饰器来定义测试夹具。然后,在测试函数中通过参数来使用这些夹具。ACu28资讯网——每日最新资讯28at.com

以下是一个简单的夹具示例:ACu28资讯网——每日最新资讯28at.com

import pytest@pytest.fixturedef setup():    # 在测试之前的准备工作    data = [1, 2, 3, 4, 5]    return datadef test_fixture_example(setup):    # 使用setup夹具    assert len(setup) == 5    assert 3 in setup

在上面的示例中,我们定义了一个名为setup的夹具。该夹具返回一个包含5个元素的列表。然后,我们在test_fixture_example()测试函数中使用了这个夹具,并编写了一些断言来验证夹具的功能。ACu28资讯网——每日最新资讯28at.com

步骤6:使用参数化测试

参数化测试是pytest的另一个强大功能。它允许您以一种简洁的方式运行多个测试用例,只需在测试函数上应用一个装饰器。ACu28资讯网——每日最新资讯28at.com

使用@pytest.mark.parametrize装饰器,您可以为测试函数提供一个或多个参数组合,并定义每个参数的值。ACu28资讯网——每日最新资讯28at.com

以下是一个参数化测试的示例:ACu28资讯网——每日最新资讯28at.com

import pytestdef add(a, b):    return a + b@pytest.mark.parametrize('a, b, expected', [    (2, 3, 5),    (4, 5, 9),    (-1, 1, 0),])def test_addition(a, b, expected):    result = add(a, b)    assert result == expected

在上面的示例中,我们使用@pytest.mark.parametrize装饰器为test_addition()测试函数提供了三个参数组合。每个参数组合都包含两个输入参数a和b,以及预期结果expected。pytest将自动为每个参数组合运行测试,并使用断言验证结果。ACu28资讯网——每日最新资讯28at.com

步骤7:其他pytest功能

除了上述步骤中提到的功能外,pytest还提供了许多其他强大的功能和插件,以帮助您更好地编写和组织测试代码。ACu28资讯网——每日最新资讯28at.com

  • 标记(Markers):您可以使用标记来选择性地运行测试集合,例如只运行特定的标记测试。
  • 测试跳过和跳过失败:您可以使用@pytest.mark.skip装饰器来跳过某些测试,以及使用@pytest.mark.xfail装饰器来标记预期失败的测试。
  • 测试覆盖率:pytest可以与覆盖率工具集成,以帮助您评估代码的测试覆盖率。
  • 测试重试:有时测试可能会因为外部因素而失败,例如网络故障。pytest可以通过使用@pytest.mark.flaky装饰器来自动重试测试,以提高稳定性。

这只是pytest的一小部分功能,它还有许多其他功能可以探索和学习。通过阅读pytest的官方文档和参考资料,您可以进一步了解这些功能并在实际项目中应用它们。ACu28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17794-0.html从小白到测试专家:掌握Pytest的实用技巧和优秀实践

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 想要微信小程序+Uniapp?XBoot开源项目助你快速开发!

下一篇: 从入门到精通:Python中SQLite数据库的实战指南!

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了&mdash;&mdash;贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对&ldquo;势&rdquo;的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top