pytest基本概念

pytest一些重要的点

  1. pytest是unittest的升级版
  2. 可以结合allure生成定制版报告
  3. 支持很多强大的第三方插件,allure-pytest、pytest-xdist、pytest-ordering…
  4. 模块名必须以test_开头或者_test结尾
  5. 测试类必须以Test开头并且不能有init方法
  6. 测试方法必须以test开头

一、运行方式

1.主函数模式

(1)运行所有:pytest.main()
(2)指定模块:pytest.main([‘-vs’,test_login.py’])
(3)指定目录:pytest.main([‘-vs’,‘./interface_testcase’])
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。
pytest.main([‘-vs’,‘/interface testcase/test interface.py:.test 04 func’])
pytest.main([‘-vs’,'./interface testcase/test interface.py…Testinterface…test 03 zhiiao’)

2.命令行模式

(1)运行所有:pytest
(2)指定模块:pytest -vs test_login.py
(3)指定目录:pytest -vs ./interface_testcase(4)指定目录:pytest -vs ./interface testcase/test interface.py…test 04 func
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用

二、断言方式

python中的alert + 布尔表达式方式,例如:

assert baiyuesms_homepage.get_text() == '登录失败 : 用户名或者密码错误'

unittest断言方式有很多,用的多的有三种:alertEqual、alertIn、alertTrue
使用时也有区别,断言时要加上self如果是在类中的话,可以把这个断言看成对象的一个属性

self.assertEqual(baiyuesms_homepage.get_text(), '登录失败 : 用户名或者密码错误')
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 使用介绍 pytestPython 中最流行的测试框架之一,支持单元测试、集成测试和复杂功能测试。以下是其核心使用方法和特性: --- #### 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、付费专栏及课程。

余额充值