目录 断言的编写和报告 使用assert语句进行断言 异常断言 警示断言 使用上下文对比 自定义断言对比信息 高级断言内省 返回: Pytest权威教程 断言的编写和报告 使用assert语句进行断言 pytest允许你使用标准的Pythonassert断言语句来验证测试中的期望结果和实际结果. 例如,你可以编写以下内容: # test_assert1.py文件内容 def f(): return 3 def test_function(): assert f() == 4 来断言你的函数返回一…
Pytest权威教程01-安装及入门 Pytest权威教程02-Pytest 使用及调用方法 Pytest权威教程03-原有TestSuite的执行方法 Pytest权威教程04-断言的编写和报告 Pytest权威教程05-Pytest fixtures:清晰 模块化 易扩展 Pytest权威教程06-使用Marks标记测试用例 Pytest权威教程07-Monkeypatching,对模块和环境进行Mock Pytest权威教程08-使用tmp目录和文件 Pytest权威教程09-捕获标准输出…
目录 钩子(Hooks) 引导时的Hook方法 初始化时的Hook方法 测试运行时的Hook方法 收集用例时的Hook方法 生成测试结果时的Hook方法 调试/交互Hook方法 返回: Pytest权威教程 钩子(Hooks) 参考: 编写插件. 引用可由conftest.py文件实现的所有Hook方法. 引导时的Hook方法 引导时的Hook方法要求尽早注册插件(内部和setuptools插件). pytest_load_initial_conftests(early_config,parse…
[TOC] 返回: Pytest权威教程 插件编写 很容易为你自己的项目实现[本地conftest插件或可以在许多项目中使用的可[安装的插件,包括第三方项目.如果你只想使用但不能编写插件,请参阅[安装和使用插件. 插件包含一个或多个钩子(hooks)方法函数.[编写钩子(hooks)方法解释了如何自己编写钩子(hooks)方法函数的基础知识和细节.pytest通过调用以下插件的[指定挂钩来实现配置,收集,运行和报告的所有方面: 内置插件:从pytest的内部_pytest目录加载. 外部插件 c…
目录 夹具(Fixtures) @ pytest.fixture config.cache的 capsys capsysbinary capfd capfdbinary doctest_namespace Request pytestconfig record_property record_testsuite_property caplog Monkeypatching testdir recwarn tmp_path tmp_path_factory tmpdir tmpdir_factor…
目录 安装及入门 安装 Pytest 创建你的第一个测试用例 执行多条测试用例 断言抛出了指定异常 使用类组织多条测试用例 函数测试中请求使用独立的临时目录 进一步阅读 返回: Pytest权威教程 安装及入门 Python支持版本: Python 2.6,2.7,3.3,3.4,3.5,Jython,PyPy-2.3 支持的平台: Unix/Posix and Windows PyPI包名: pytest 依赖项: py,colorama (Windows) PDF文档: 下载最新版本文档 P…
目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.TestCase支持 开箱即用的好处 unittest.TestCase子类中的pytest特性 unittest.TestCase 使用标记将pytestFixture方法混合到子类中 使用autouseFixture方法和访问其他Fixture方法 返回: Pytest权威教程 缓存:使用跨执行状态…
目录 函数(Functions) pytest.approx pytest.fail pytest.skip pytest.importorskip pytest.xfail pytest.exit pytest.main pytest.param pytest.raises pytest.deprecated_call pytest.register_assert_rewrite pytest.warns pytest.freeze_includes 返回: Pytest权威教程 函数(Fun…
目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stackoverflow.com上的pytest专栏通常会有示例解答. 基本示例参考: 安装及入门: 基础入门示例 断言的编写及报告: 基础断言示例 Pytest Fixture:显式,模块化,扩展: : 基本fixture/setup示例 参数化Fixture和测试用例:基本测试用例的参数化 unitte…
目录 编写钩子(Hooks)函数 钩子函数验证和执行 firstresult: 遇到第一个有效(非None)结果返回 hookwrapper:在其他钩子函数周围执行 钩子(Hooks)函数排序/调用示例 声明新的钩子函数 使用第三方插件的钩子函数 返回: Pytest权威教程 编写钩子(Hooks)函数 钩子函数验证和执行 Pytest会调用任意给定规格并注册了的插件的钩子方法.让我们看一下一个函数的典型钩子函数 pytest_collection_modifyitems(session,con…
目录 特殊变量(Special Variables) collect_ignore collect_ignore_glob pytest_plugins pytest_mark PYTEST_DONT_REWRITE(模块文档字符串) 环境变量(Environment Variables) PYTEST_ADDOPTS PYTEST_DEBUG PYTEST_PLUGINS PYTEST_DISABLE_PLUGIN_AUTOLOAD PYTEST_CURRENT_TEST 异常(Excepti…
目录 Pytest fixtures:清晰 模块化 易扩展 Fixtures作为函数参数使用 Fixtures: 依赖注入的主要例子 conftest.py: 共享fixture函数 共享测试数据 生效范围:在测试类/测试模块/测试会话中共享fixture对象 高范围的fixture函数优先实例化 fixture结束/执行teardown代码 Fixtures中使用测试上下文的内省信息 Fixtures工厂方法 Fixtures参数化 使用参数化fixtures标记 模块化:在fixture函数…
目录 使用tmp目录和文件 tmp_path Fixture方法 tmp_path_factory Fixture方法 tmpdir Fixture方法 tmpdir_factory Fixture方法 默认临时目录根目录 返回: Pytest权威教程 使用tmp目录和文件 tmp_path Fixture方法 3.9版本新函数 你可以使用tmp_path 在临时目录根目录中创建一个独立的临时目录以供测试调用. tmp_path是一个pathlib/pathlib2.Path对象.以下是测试使用…
目录 捕获警告信息 @pytest.mark.filterwarnings 禁用警告摘要 完全禁用警告捕获 弃用警告和待命记录警告 确保代码触发弃用警告 用警告函数断言警告 录制警告 自定义失败消息 内部pytest警告 返回: Pytest权威教程 捕获警告信息 3.1版中的新函数. 从版本开始3.1,pytest现在会在测试执行期间自动捕获警告并在会话结束时显示它们: # content of test_show_warnings.py import warnings def api_v1(…
目录 模块及测试文件中集成doctest测试 编码 使用doctest选项 输出格式 pytest-specific 特性 返回: Pytest权威教程 模块及测试文件中集成doctest测试 编码 使用doctest选项 默认情况下,Pytest按照python doctest模块标准test*.txt模式进行匹配.你也可以通过使用以下命令更改匹配模式: pytest --doctest-glob='*.rst' 在命令行上.从版本开始2.9,--doctest-glob可以在命令行中多次使用…
目录 Fixture方法及测试用例的参数化 @pytest.mark.parametrize:参数化测试函数 基本的pytest_generate_tests例子 更多示例 返回: Pytest权威教程 Fixture方法及测试用例的参数化 Pytest在多个级别启用测试参数化: pytest.fixture()允许一个[参数化Fixture方法. @pytest.mark.parametrize允许在测试函数或类中定义多组参数和Fixture. pytest_generate_tests允许用…
目录 安装和使用插件 在测试模块或conftest文件中要求/加载插件 找出哪些插件是可用的 按名称取消/取消注册插件 返回: Pytest权威教程 安装和使用插件 本节讨论如何安装和使用第三方插件.有关编写自己的插件的信息,请参阅编写插件. 安装第三方插件可以通过以下方式轻松完成pip: pip install pytest-NAME pip uninstall pytest-NAME 如果安装了插件,则pytest自动查找并集成它,无需激活它. 这是一些常用插件列表: pytest-djan…
目录 优质集成实践 使用pip安装包 Python测试发现的约定 选择测试布局结构/导入规则 在应用程序代码外测试 测试作为应用程序代码的一部分 tox 返回: Pytest权威教程 优质集成实践 使用pip安装包 对于开发,我们建议你将[venv来安装应用程序和任何依赖项,以及pytest包本身.这可确保你的代码和依赖项与系统Python安装隔离. 接下来,setup.py使用以下最低内容将文件放在包的根目录中: from setuptools import setup,find_packag…
目录 不稳定测试用例处理 为什么不稳定测试是个问题 潜在的根本原因 Pytest特性 其他一般策略 相关研究 相关资源 返回: Pytest权威教程 不稳定测试用例处理 "不稳定"测试用例是指,有时候用例通过,有时候失败.用例间歇或偶发性出现故障,并且不清楚原因.本页讨论了pytest的一些帮助处理这些不确定测试用例的功能.这些功能可以帮助你快速确定.修复或缓解这些问题,或提供一些其他的常规策略. 为什么不稳定测试是个问题 当使用连续集成(CI)服务器时,不稳定测试尤其麻烦,因此在合并…
目录 配置 命令行选项和配置文件设置 初始化:确定ROOTDIR和INIFILE 寻找rootdir 如何更改命令行选项默认值 内置的配置文件选项 返回: Pytest权威教程 配置 命令行选项和配置文件设置 你可以使用常规帮助选项获取有关INI选项配置文件中命令行选项和值的帮助: pytest -h # prints options _and_ config file settings 这将显示已安装插件注册的命令行和配置文件设置. 初始化:确定ROOTDIR和INIFILE pytest根据…
目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用pytest 返回: Pytest权威教程 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 参考文件目录布局: root/ |- foo/ |- __init__.py |- conftest.py |- bar/ |- __init__.py…
目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding doctest_optionflags empty_parameter_set_mark filterwarnings junit_family junit_suite_name log_cli_date_format log_cli_format log_cli_level log_date_form…
目录 对象(Objects) CallInfo Class Collector Config ExceptionInfo FixtureDef FSCollector Function Item MarkDecorator MarkGenerator Mark Metafunc Module Node Parser PluginManager PytestPluginManager Session TestReport _Result 返回: Pytest权威教程 对象(Objects) Obj…
目录 Pytest 使用及调用方法 使用python -m pytest调用pytest 可能出现的执行退出code 获取版本路径.命令行选项及环境变量相关帮助 第1(N)次失败后停止测试 指定及选择测试用例 修改Python原生追溯(traceback)信息 详尽的测试结果摘要 执行失败时进入PDB(Python调试器) 测试开始时进入PDB(Python调试器) 设置断点 使用内置断点方法 分析测试用例执行时间 创建JUnit XML格式的测试报告 创建结果日志格式文件 将测试报告发送到在线…
目录 原有TestSuite的执行方法 使用pytest运行已存在的测试套件(test suite) 返回: Pytest权威教程 原有TestSuite的执行方法 Pytest可以与大多数现有的测试套件(testsuite)一起使用,但是它的加载方式方式不像nose或Python的默认单元测试框架的测试运行器(test runner). 在使用本节之前,你需要安装pytest. 使用pytest运行已存在的测试套件(test suite) 假设你想要在某个地方为现有仓库(respsitory)…
目录 使用Marks标记测试用例 在未知标记上引发异常: -strict 标记改造和迭代 返回: Pytest权威教程 使用Marks标记测试用例 通过使用pytest.mark你可以轻松地在测试用例上设置元数据.例如, 一些常用的内置标记: skip - 始终跳过该测试用例 skipif - 遇到特定情况跳过该测试用例 xfail - 遇到特定情况,产生一个"期望失败"输出 parametrize - 在同一个测试用例上运行多次调用(译者注: 参数化数据驱动) 创建自定义标记或将标记…
目录 Monkeypatching,对模块和环境进行Mock 简单示例如: 猴子补丁方法 Monkeypatching 返回对象: 构建mock类 全局补丁示例如:阻止"requests"库的远程操作 Monkeypatching 环境变量 Monkeypatching字典 参考API 返回: Pytest权威教程 返回: Pytest权威教程 Monkeypatching,对模块和环境进行Mock 有时,测试需要调用依赖于全局设置的函数,或调用无法轻松测试的代码(如网络访问). mo…
目录 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 设置捕获方法或禁用捕获 调试中使用print语句 在测试用例中使用的捕获的输出 返回: Pytest权威教程 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 在测试执行期间,程序中的标准输出/标准错误输出都会被捕获到. 如果测试或setup方法执行失败时,会在报错追溯信息中查看到程序中的标准输出及标准错误输出.(可以通过--show-capture命令行选项配置是否捕获程…
目录 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 Skip跳过用例 xFail:将测试函数标记为预期失败 Skip/xFail参数设置 返回: Pytest权威教程 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 你可以标记无法在某些平台上运行的测试用例或你希望失败的测试用例,以便Pytest可以相应地处理它们并提供测试会话的摘要,同时保持测试套件为通过状态. 跳过(Skip)指,你希望如果某些条件得到满足你的测试用例才执行,否则Pytest应该完全跳…
目录 运行Nose用例 使用方法 支持的nose风格 不支持的习语/已知问题 返回: Pytest权威教程 运行Nose用例 Pytest基本支持运行Nose框架格式的测试用例. 使用方法 后安装pytest类型: python setup.py develop # make sure tests can import our package pytest # instead of 'nosetests' 你应该能够运行你的nose样式测试并利用pytest的函数. 支持的nose风格 在模块/…