目录 夹具(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…
目录 钩子(Hooks) 引导时的Hook方法 初始化时的Hook方法 测试运行时的Hook方法 收集用例时的Hook方法 生成测试结果时的Hook方法 调试/交互Hook方法 返回: Pytest权威教程 钩子(Hooks) 参考: 编写插件. 引用可由conftest.py文件实现的所有Hook方法. 引导时的Hook方法 引导时的Hook方法要求尽早注册插件(内部和setuptools插件). pytest_load_initial_conftests(early_config,parse…
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-捕获标准输出…
目录 对象(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…
目录 函数(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…
目录 标记(Marks) pytest.mark.filterwarnings pytest.mark.parametrize pytest.mark.skip pytest.mark.skipif pytest.mark.usefixtures pytest.mark.xfail 自定义标记 返回: Pytest权威教程 标记(Marks) 可以使用标记应用元数据来测试函数(但不是Fixture方法),然后可以通过Fixture方法或插件访问. pytest.mark.filterwarnin…
目录 编写钩子(Hooks)函数 钩子函数验证和执行 firstresult: 遇到第一个有效(非None)结果返回 hookwrapper:在其他钩子函数周围执行 钩子(Hooks)函数排序/调用示例 声明新的钩子函数 使用第三方插件的钩子函数 返回: Pytest权威教程 编写钩子(Hooks)函数 钩子函数验证和执行 Pytest会调用任意给定规格并注册了的插件的钩子方法.让我们看一下一个函数的典型钩子函数 pytest_collection_modifyitems(session,con…
目录 配置选项(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…
目录 特殊变量(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…
目录 Monkeypatching,对模块和环境进行Mock 简单示例如: 猴子补丁方法 Monkeypatching 返回对象: 构建mock类 全局补丁示例如:阻止"requests"库的远程操作 Monkeypatching 环境变量 Monkeypatching字典 参考API 返回: Pytest权威教程 返回: Pytest权威教程 Monkeypatching,对模块和环境进行Mock 有时,测试需要调用依赖于全局设置的函数,或调用无法轻松测试的代码(如网络访问). mo…
目录 捕获警告信息 @pytest.mark.filterwarnings 禁用警告摘要 完全禁用警告捕获 弃用警告和待命记录警告 确保代码触发弃用警告 用警告函数断言警告 录制警告 自定义失败消息 内部pytest警告 返回: Pytest权威教程 捕获警告信息 3.1版中的新函数. 从版本开始3.1,pytest现在会在测试执行期间自动捕获警告并在会话结束时显示它们: # content of test_show_warnings.py import warnings def api_v1(…
目录 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 Skip跳过用例 xFail:将测试函数标记为预期失败 Skip/xFail参数设置 返回: Pytest权威教程 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 你可以标记无法在某些平台上运行的测试用例或你希望失败的测试用例,以便Pytest可以相应地处理它们并提供测试会话的摘要,同时保持测试套件为通过状态. 跳过(Skip)指,你希望如果某些条件得到满足你的测试用例才执行,否则Pytest应该完全跳…
目录 配置 命令行选项和配置文件设置 初始化:确定ROOTDIR和INIFILE 寻找rootdir 如何更改命令行选项默认值 内置的配置文件选项 返回: Pytest权威教程 配置 命令行选项和配置文件设置 你可以使用常规帮助选项获取有关INI选项配置文件中命令行选项和值的帮助: pytest -h # prints options _and_ config file settings 这将显示已安装插件注册的命令行和配置文件设置. 初始化:确定ROOTDIR和INIFILE pytest根据…
目录 断言的编写和报告 使用assert语句进行断言 异常断言 警示断言 使用上下文对比 自定义断言对比信息 高级断言内省 返回: Pytest权威教程 断言的编写和报告 使用assert语句进行断言 pytest允许你使用标准的Pythonassert断言语句来验证测试中的期望结果和实际结果. 例如,你可以编写以下内容: # test_assert1.py文件内容 def f(): return 3 def test_function(): assert f() == 4 来断言你的函数返回一…
目录 使用Marks标记测试用例 在未知标记上引发异常: -strict 标记改造和迭代 返回: Pytest权威教程 使用Marks标记测试用例 通过使用pytest.mark你可以轻松地在测试用例上设置元数据.例如, 一些常用的内置标记: skip - 始终跳过该测试用例 skipif - 遇到特定情况跳过该测试用例 xfail - 遇到特定情况,产生一个"期望失败"输出 parametrize - 在同一个测试用例上运行多次调用(译者注: 参数化数据驱动) 创建自定义标记或将标记…
目录 使用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对象.以下是测试使用…
目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.TestCase支持 开箱即用的好处 unittest.TestCase子类中的pytest特性 unittest.TestCase 使用标记将pytestFixture方法混合到子类中 使用autouseFixture方法和访问其他Fixture方法 返回: Pytest权威教程 缓存:使用跨执行状态…
[TOC] 返回: Pytest权威教程 插件编写 很容易为你自己的项目实现[本地conftest插件或可以在许多项目中使用的可[安装的插件,包括第三方项目.如果你只想使用但不能编写插件,请参阅[安装和使用插件. 插件包含一个或多个钩子(hooks)方法函数.[编写钩子(hooks)方法解释了如何自己编写钩子(hooks)方法函数的基础知识和细节.pytest通过调用以下插件的[指定挂钩来实现配置,收集,运行和报告的所有方面: 内置插件:从pytest的内部_pytest目录加载. 外部插件 c…
目录 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…
目录 安装及入门 安装 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…
目录 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)…
目录 Pytest fixtures:清晰 模块化 易扩展 Fixtures作为函数参数使用 Fixtures: 依赖注入的主要例子 conftest.py: 共享fixture函数 共享测试数据 生效范围:在测试类/测试模块/测试会话中共享fixture对象 高范围的fixture函数优先实例化 fixture结束/执行teardown代码 Fixtures中使用测试上下文的内省信息 Fixtures工厂方法 Fixtures参数化 使用参数化fixtures标记 模块化:在fixture函数…
目录 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 设置捕获方法或禁用捕获 调试中使用print语句 在测试用例中使用的捕获的输出 返回: Pytest权威教程 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 在测试执行期间,程序中的标准输出/标准错误输出都会被捕获到. 如果测试或setup方法执行失败时,会在报错追溯信息中查看到程序中的标准输出及标准错误输出.(可以通过--show-capture命令行选项配置是否捕获程…
目录 模块及测试文件中集成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允许用…
目录 运行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风格 在模块/…
目录 经典xUnit风格的setup/teardown 模块级别setup/teardown 类级别setup/teardown 方法和函数级别setup/teardown 返回: Pytest权威教程 经典xUnit风格的setup/teardown 本节介绍了如何在每个模块/类/函数的基础上实现Fixture(setup和teardown测试状态)的经典而流行的方法. 注意 虽然这些setup/teardown方法对于来自aunittest或nose的人来说简单且熟悉,但background…
目录 安装和使用插件 在测试模块或conftest文件中要求/加载插件 找出哪些插件是可用的 按名称取消/取消注册插件 返回: Pytest权威教程 安装和使用插件 本节讨论如何安装和使用第三方插件.有关编写自己的插件的信息,请参阅编写插件. 安装第三方插件可以通过以下方式轻松完成pip: pip install pytest-NAME pip uninstall pytest-NAME 如果安装了插件,则pytest自动查找并集成它,无需激活它. 这是一些常用插件列表: pytest-djan…
目录 记录日志 caplog Fixture方法 实时日志 版本改动记录 Pytest3.4中不向后兼容的更改 返回: Pytest权威教程 记录日志 Pytest默认捕获WARNING以上日志消息,在每个失败的测试结果概要中,捕获的log信息和stdout.stderr信息使用相同的方式,分块显示. 不带选项运行: pytest 失败的用例显示格式如下: ----------------------- Captured stdlog call ---------------------- te…