首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pytest教程

Pytest教程

简介

Pytest是一个在Python社区中广泛使用的测试框架,它以其简洁的语法、强大的功能和丰富的插件生态系统而著称。Pytest主要用于单元测试,但也支持功能测试和集成测试,适用于各种规模的Python项目。

优势

  • 简单易用:Pytest的语法直观,学习曲线较低,使得编写测试变得容易。
  • 丰富的插件:Pytest具有大量的插件,可以扩展其功能,满足不同项目的需求。
  • 强大的断言:Pytest提供丰富的断言功能,使得测试用例编写更灵活。
  • 广泛的社区支持:Pytest拥有活跃的社区,提供大量的资源和帮助。

类型

单元测试

单元测试是针对程序模块的测试,确保每个独立的部分按预期工作。

集成测试

集成测试关注不同模块或服务之间的交互,确保它们协同工作。

功能测试

功能测试验证软件的整体功能,包括用户流程和界面交互。

应用场景

Pytest广泛应用于各种需要确保代码质量和可靠性的场景,特别是在Web开发、API开发和科学计算等领域。

如何安装

安装Pytest非常简单,可以通过pip命令进行安装:

代码语言:txt
复制
pip install pytest

编写第一个测试

创建一个名为test_example.py的文件,并编写以下代码:

代码语言:txt
复制
def add(a, b):
    return a + b

def test_add():
    assert add(1, 2) == 3

运行测试用例:

代码语言:txt
复制
pytest test_example.py

运行测试

Pytest会自动发现并运行所有以test_开头的函数。运行测试命令:

代码语言:txt
复制
pytest

使用fixtures

Fixtures是Pytest中一个非常重要的概念,它用于为测试用例提供一些前置条件和后置条件。例如:

代码语言:txt
复制
import pytest

@pytest.fixture
def setup_data():
    # Setup code
    data = {'key': 'value'}
    return data

def test_data(setup_data):
    assert setup_data['key'] == 'value'

参数化测试

Pytest允许通过@pytest.mark.parametrize装饰器轻松进行参数化测试:

代码语言:txt
复制
import pytest

@pytest.mark.parametrize("input_data, expected", [(1, 2), (3, 4), (5, 6)])
def test_add(input_data, expected):
    assert input_data * 2 == expected

跳过测试和预期失败

有时你可能需要跳过某些测试,或者标记某些测试预期会失败:

代码语言:txt
复制
import pytest

@pytest.mark.skip(reason="This test is not implemented yet")
def test_not_implemented_function():
    pass

通过上述步骤,你可以开始使用Pytest进行Python测试。记得查阅Pytest的官方文档以获取更多高级功能和最佳实践。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pytest系列教程——1、pytest快速入门

写在前面 pytest零零散散接触的不少,总是感觉缺少系统的学习。后续,我会专门整理pytest系列教程,内容绝对充实。...5、运行参数说明 -s显示打印内容 如:pytest test.py -s 等价于:pytest.main(['-s','test.py']) ::指定测试用例运行 运行函数:如:pytest pytest-demo.py.../report.html']) –maxfail=1出现1个失败就终止测试 如:pytest pytest-demo.py --maxfail=1 等价于:pytest.main([’-s’,'pytest-demo.py...’,’–maxfail=1’]) -npytest-xdist多线程运行(需要先安装pytest-xdist) 如:pytest test.py -n 2 等价于:pytest.main(['-s','...pytest-demo.py','-n=2']) -x 遇到错误时停止测试 如:pytest test.py -x --maxfail=num,当用例错误个数达到指定数量时,停止测试 如:pytest

2.2K30
  • Python 测试框架 pytest —— 使用教程

    等自动化测试、接口自动化测试(pytest+requests) pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html...集成 report框架----allure 也支持了pytest 官方文档: https://docs.pytest.org/en/latest/contents.html pytest 规范 pytest...安装 默认情况下 python 自带 pytest 框架,可以通过命令进行升级安装 pip install -U pytest 验证安装 pytest --version 输出 pytest 版本表明安装成功...C:\Users\Administrator>pytest --version pytest 6.2.5 运行方式 测试类主函数模式 可以在 python 中执行 pytest 命令 引入 pytest...包,在python 中执行代码 pytest.main("-s test_abc.py") 命令行模式 直接执行命令 pytest 文件路径/测试文件名 pytest .

    1.2K10

    Pytest(十一) pytest ini文件

    系列分享 Pytest系列(一)初次了解 Pytest(二)执行规则以及编写执行多条用例 Pytest(三)Pytest执行命令 Pytest(四)Pytest断言 Pytest(五)标记函数...Pytest(六)跳过测试 Pytest(七) pytest之参数化 Pytest(八) pytest Fixture(一) Pytest(九) pytest Fixture(二) Pytest...(十) pytest Fixture(三) ---- pytest里面有些文件是非test文件 pytest.ini pytest的主配置文件,可以改变pytest的默认行为 conftest.py...格式文件,影响setup.py的行为 使用pytest --help指令可以查看pytest.ini的设置选项 ini文件基本格式 [pytest] addopts = -rsv 我们在执行的时候,...可以不增加这些参数,addopts就是我们运行的时候所最近的命令 直接在命令行输入pytest,会自动读取pytest.ini文件 我们还可以指定markers分组 markers =

    1.5K60

    Pytest(四)Pytest断言

    系列分享 Pytest系列(一)初次了解 Pytest(二)执行规则以及编写执行多条用例 Pytest(三)Pytest执行命令 ---- 什么是断言: 测试的成功与否就是拿实际的结果与预期的结果进行比较...,这个比的过程就是断言(assert) Pytest断言 Pytest的断言和unittest断言不一样,Pytest使用的是python自带的关键字assert来断言, assert 关键字后面可以跟一个表达式...给pytest.raises()函数传递一个关键字参数match,通过match设置的字符串正则表达式匹配异常信息。..."判断a是否能被3整除,当前a的值为:%s" %a if __name__ == '__main__': pytest.main() 结果如下: 使用标记检查异常 @pytest.mark.xfail...(raises=ZeroDivisionError) import pytest @pytest.mark.xfail(raises=ZeroDivisionError) def test_exception_value

    1.1K30

    pytest文档3-pycharm运行pytest

    前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻烦...,所以很有必要学习如何在pycharm里面运行pytest用例 pycharm运行三种方式 1.以xx.py脚本方式直接执行,当写的代码里面没用到unittest和pytest框架时,并且脚本名称不是以...备注:pytest是可以兼容unittest框架代码的 pycharm写pytest代码 1.在pycharm里面写pytest用例,先导入pytest # D:/YOYO/test_class.py...(‘-q test_class.py’)里面参数需要传list,多个参数放list就不会有警告了 pytest.main([‘-q’, ‘test_class.py’]) pycharm设置pytest...3.pytest是可以兼容unittest脚本的,之前写的unittest用例也能用pytest框架去运行 作者:上海-悠悠 QQ交流群:588402570

    2.7K30

    pytest数据驱动-pytest.mark.parametrize

    下面先结合简单案例分享小编学习到的pytest一个应用比较广泛的数据驱动框架: parameterize,一看秒懂,一看秒懂,一看秒懂!!!...pytest.mark.parametrize 是 pytest 的内置装饰器,它允许在 function 或者 class 上定义多组参数和 fixture来实现数据驱动。...@pytest.mark.parametrize() 装饰器接收两个参数:第一个参数以字符串的形式存在,表示被被测试函数接受的参数,假如被测试函数有多个参数,则以逗号分开。第二个参数用于保存测试数据。...pytest.mark.parametrize多参数 通常在工作中进行测试的参数不止一个,多参数还是比较常见的,因为不仅仅包括用于测试的数据, 还包括用于验证的数据。 示例1 ? 运行结果 ?...以上是对功能函数sum_of_two(num1,num2)两数之和(功能函数两个入参)的简单验证,包含三条测试用例和预期结果 总结pytest 进行数据驱动的基本思路 pytest可以通过 pytest.mark.parametrize

    2.2K10

    pytest参数化:@pytest.mark.parametrize

    内置的pytest.mark.parametrize装饰器可以用来对测试函数进行参数化处理。...下面是一个典型的范 例,检查特定的输入所期望的输出是否匹配: test_expectation.py import pytest @pytest.mark.parametrize("test_input...test_input) == expected 装饰器@parametrize定义了三组不同的(test_input, expected)数据,test_eval则会使用这三组数据 执行三次: $ pytest...你也可以对参数集中的某个参数使用mark,比如下面使用了内置的mark.xfail: test_exception.py import pytest @pytest.mark.parametrize(...可以对一个函数使用多个parametrize的装饰器,这样多个装饰器的参数会组合进行调用: import pytest @pytest.mark.parametrize("x", [0, 1]) @pytest.mark.parametrize

    41630

    Pytest(十七)pytest增加log日志

    系列分享 Pytest系列(一)初次了解 Pytest(二)执行规则以及编写执行多条用例 Pytest(三)Pytest执行命令 Pytest(四)Pytest断言 Pytest(五)标记函数...Pytest(六)跳过测试 Pytest(七) pytest之参数化 Pytest(八) pytest Fixture(一) Pytest(九) pytest Fixture(二) Pytest...(十) pytest Fixture(三) Pytest(十一) pytest ini文件 Pytest(十二) Pytest产生测试报告 Pytest(十三)durations统计用例运行时间...Pytest(十四)用例执行顺序 Pytest(十五)重试机制 Pytest(十六)多进程并发执行 ---- 在执行用例的时候,发现其实打印的日志有时候不能满足测试的需求,应该如何实现呢..., 可以先看下pytest -h 可以看下,在pytest.ini文件配置下 [pytest] log_cli = 1 log_cli_level = INFO log_cli_format

    2.7K40

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券