pytest学习小结

目的:记录自己学习pytest中的一些知识点或者总结
问题:
1.安装pytest报错:pip安装第三方库报错SSL: CERTIFICATE_VERIFY_FAILED
原因:3.5以上的python需要验证SSL,解决方式在后面增加–trusted-host [url1] --trusted-host [url2] …
eg: pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org -U pytest
eg2:pip install xlrd -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
1.类需要以Test_开头,函数需要以test_开头,方法也需要以test_开头,否则不会被收集到
在这里插入图片描述
2.pytest可以兼容unittest
3.框架执行顺序:
module–>function–>class–>method
eg:
startup_module里面的内容——>执行非类的函数的startup——>执行类的函数的startup——>依次执行类中方法的startup
teardown_module里面的内容<——类的函数的teardown<——执行类的函数的teardown<——依次执行类中方法的teardown<——
4.常用断言方法在这里插入图片描述
5.Mark的用法
1)跳过功能skip
@pytest.mark.skip or
@pytest.mark.skipif(“if 语句的写法,可叠加使用”)
以下是应用举例
在这里插入图片描述
2).xfail功能,某些已知失败的场景设置为失败
@pytest.mark.xfail
在这里插入图片描述

03-14
<think>好的,用户想了解Python pytest的使用介绍。首先,我需要回忆一下pytest的基本功能和常用方法。pytest是一个强大的测试框架,可以简化测试编写和执行,支持参数化测试、fixture等高级功能。记得用户提供的引用里提到,执行pytest.main()会自动查找以test_开头或_test结尾的文件,这点很重要,应该放在基础用法里。 接下来,我得整理回答的结构,确保符合用户的要求。系统级指令提到要使用中文,数学公式用$...$,但这里可能用不上数学公式,不过要注意代码块的格式。用户还要求生成相关问题,这需要放在最后。 首先,介绍pytest的基本概念,比如它是第三方库,需要安装。然后说明如何编写测试用例,比如函数以test_开头,类以Test开头。接着是运行测试的方法,包括命令行和pytest.main(),引用里的例子可以在这里使用,比如引用1提到的自动查找测试文件。 然后,讲解常用功能,比如断言机制,pytest会自动报告失败的原因,不需要用assertEqual这样的方法。参数化测试使用@pytest.mark.parametrize,这里可以举个例子。Fixture部分需要解释用途,比如初始化资源,并用@pytest.fixture装饰器,可能还要提到conftest.py共享fixture。 此外,插件系统也是pytest的一大优势,比如pytest-mock,引用2里提到测试成功时的输出示例,可以用来展示运行结果。还可以提到其他插件如pytest-cov用于覆盖率,pytest-xdist并行测试。 最后,生成相关问题需要考虑用户可能想深入的方向,比如如何安装、与unittest的区别、生成报告、常用插件等。这些问题应该覆盖用户可能有的后续疑问,帮助他们进一步学习。 检查一下是否需要遵循其他格式要求,比如独立公式用$$...$$,但这里内容不需要数学公式。确保代码块用三个反引号包裹,语言标注正确。引用标识要放在对应的位置,比如提到自动查找测试文件时加上[^1],提到测试输出时引用[^2]。 总结回答结构:安装、编写用例、运行测试、常用功能(断言、参数化、fixture、插件)、示例代码、相关问题。确保每个部分清晰,步骤明确,帮助用户逐步了解pytest的使用。</think>### Python pytest 使用介绍 pytest 是 Python 中最流行的测试框架之一,支持单元测试、集成测试和复杂功能测试。以下是其核心使用方法和特性: --- #### 1. **安装 pytest** ```bash pip install pytest ``` --- #### 2. **编写测试用例** - **文件命名规则**:测试文件需以 `test_` 开头或 `_test` 结尾,例如 `test_math.py` 或 `math_test.py`。 - **函数/类命名规则**: - 测试函数以 `test_` 开头,例如 `def test_add():`。 - 测试类以 `Test` 开头,例如 `class TestMath:`。 **示例**: ```python # test_math.py def test_add(): assert 1 + 2 == 3 def test_subtract(): assert 5 - 3 == 2 ``` --- #### 3. **运行测试** - **命令行运行**:在项目目录下执行 `pytest`,自动发现并运行所有符合条件的测试文件[^1]。 - **指定文件或函数**: ```bash pytest test_math.py # 运行特定文件 pytest test_math.py::test_add # 运行特定函数 ``` - **在代码中调用**: ```python import pytest pytest.main() # 自动查找并执行测试 ``` --- #### 4. **常用功能** - **断言机制**:直接使用 `assert` 语句,失败时自动输出详细信息。 ```python def test_divide(): result = 10 / 2 assert result == 5 ``` - **参数化测试**:通过 `@pytest.mark.parametrize` 简化多组输入测试。 ```python import pytest @pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (4, 5, 9)]) def test_sum(a, b, expected): assert a + b == expected ``` - **Fixture(依赖注入)**:用于初始化资源(如数据库连接)。 ```python import pytest @pytest.fixture def data(): return [1, 2, 3] def test_length(data): assert len(data) == 3 ``` - **插件扩展**: - `pytest-mock`:简化模拟对象操作[^2]。 - `pytest-cov`:生成代码覆盖率报告。 - `pytest-xdist`:支持并行测试。 --- #### 5. **测试输出示例** 执行 `pytest test_math.py` 后,输出如下: ``` ============================= test session starts ============================= platform linux -- Python 3.10.6, pytest-7.2.0 rootdir: /path/to/project collected 2 items test_math.py .. [100%] ============================== 2 passed in 0.01s ============================== ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值