02-pytest-用例运行规则

本文详细介绍了如何使用pytest进行自动化测试,包括如何在命令行中运行pytest、指定执行特定测试用例的方法、利用标记表达式来筛选测试用例等。此外还讲解了如何通过不同的运行参数来控制pytest的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

cmd运行

执行用例规则

运行参数


cmd运行

  • pytest
  • py.test
  • python -m pytest

执行用例规则

  • 执行某个目录下所有的用例 :  pytest   目录名
  • 执行某一个py文件下用例 :  pytset   xx.py
  • -k 按关键字匹配 : pytest -k "MyClass and not method"
  • 按节点运行 :   
#运行.py模块里面的某个函数   
pytest test_mod.py::test_func

#运行.py模块里面,测试类里面的某个方法
pytest test_mod.py::TestClass::test_method
  • 标记表达式 :  pytest -m slow       说明:将运行用@ pytest.mark.slow装饰器修饰的所有测试。

运行参数

  • -s: 显示程序中的 print/logging 输出
  • -v: 丰富信息模式, 输出更详细的用例执行信息
  • -k: 运行包含某个字符串的测试用例。如:pytest -k add XX.py 表示运行 XX.py 中包含 add 的测试用例。
  • -q: 简单输出模式, 不输出环境信息
  • -x: 出现一条测试用例失败就退出测试
pytest -x           # 第一个错误后停止
pytest --maxfail=2  # 第二个错误后停止

<think>我们正在讨论如何使用pytest框架执行测试用。根据引用内容,pytest执行测试用有默认的顺序,但也支持自定义顺序。此外,pytest的测试用设计需要遵循一定的规则,比如文件名、函数名、类名等需要以特定前缀开头。 首先,根据引用[4],pytest的用设计原则如下: -测试文件名应满足:`test_*.py`或`*_test.py`-测试函数应以 `test_`开头-测试类应以 `Test`开头,并且不能有`__init__`方法-测试类中的测试方法应以`test_`开头-所有的包(package)必须要有`__init__.py`文件其次,关于执行测试用,我们可以通过命令行执行,也可以在代码中调用。引用[2]和引用[3]给出了一些执行测试用子。 执行测试用的常用方式: 1.在命令行中执行:进入测试文件所在目录,运行`pytest`命令。pytest会自动查找当前目录及其子目录中符合命名规则的测试文件,并执行其中的测试用。2.指定特定文件:`pytest test_file.py`3.指定特定测试类:`pytest test_file.py::TestClass`4.指定特定测试方法:`pytest test_file.py::TestClass::test_method` 5.使用标记(mark)来执行特定的测试用(引用[5]):如,我们可以给测试用打上标记,然后通过标记来执行如,在测试用上使用`@pytest.mark.smoke`,然后执行`pytest-msmoke`。 另外,引用[1]和引用[3]提到了pytest的用执行顺序。pytest默认的执行顺序是: -测试目录:按目录的排序顺序(字母顺序)-测试模块:按文件名排序(字母顺序)-测试类:按类名的字母顺序-测试方法:按方法名的字母顺序但是,我们可以通过插件(如pytest-ordering)来改变测试用执行顺序。如,使用`@pytest.mark.run(order=1)`来指定顺序。 现在,我们按照用户的要求,逐步说明如何使用pytest执行测试用。###步骤1:安装pytest在开始之前,确保已经安装了pytest。可以使用pip安装: ```bashpip installpytest``` ###步骤2:编写测试用创建一个测试文件,如`test_sample.py`,并编写测试用。以下是一个简单的子:```python#test_sample.pydef test_addition():assert1+1 ==2deftest_subtraction():assert3 -1==2class TestMathOperations:def test_multiplication(self):assert2 *3==6deftest_division(self):assert6 /2==3``` ###步骤3:执行测试用打开命令行,进入包含`test_sample.py`的目录,然后运行:```bashpytest``` pytest会自动发现并运行所有测试用。###步骤4:查看测试结果pytest会输出详细的测试结果,包括通过的测试、失败的测试以及错误信息。###高级用法1. **指定测试用执行顺序**:如果需要控制测试用执行顺序,可以使用`pytest-ordering`插件。-安装:`pipinstall pytest-ordering`-在测试用上使用装饰器:```python@pytest.mark.run(order=1)deftest_first():pass```2.**通过标记执行**:给测试用打标记,然后选择执行特定标记的用。```pythonimportpytest@pytest.mark.smokedeftest_login():pass```执行标记为smoke的测试用:`pytest-msmoke`3.**执行特定测试**:可以指定具体的测试文件、测试类或测试方法执行,如:```bashpytest test_sample.py::TestMathOperations::test_multiplication```4.**生成测试报告**:可以使用pytest-html插件生成HTML报告:```bashpytest--html=report.html```###注意事项-确保测试文件、测试函数/方法的命名符合pytest规则-测试用中通常使用assert语句进行断言。###相关问题1.pytest如何自动发现测试用? 2.如何忽略某些测试用执行?3.pytest中如何管理测试的前后置操作? 4.如何生成测试覆盖率报告?5.在pytest中如何参数化测试用? 以上内容基于引用[1]到[5]的信息整理,并结合了pytest的基本用法。希望这些步骤能帮助你顺利使用pytest执行测试用。</think>### 如何使用 pytest 框架执行测试用 pytest 是一个功能强大的 Python 测试框架,执行测试用主要通过命令行操作。以下是详细步骤: #### 一、基本执行方式 1. **安装 pytest** 在终端执行安装命令: ```bash pip install pytest ``` 2. **执行所有测试用** 在项目根目录运行: ```bash pytest ``` pytest 会自动发现并执行- 文件名匹配 `test_*.py` 或 `*_test.py` 的文件 - 函数名以 `test_` 开头的测试函数 - 类名以 `Test` 开头的测试类(不能包含 `__init__` 方法) - 类中以 `test_` 开头的方法 [^4] 3. **执行指定文件/用** ```bash # 执行单个文件 pytest test_login.py # 执行特定测试类 pytest test_login.py::TestLogin # 执行特定测试方法 pytest test_login.py::TestLogin::test_valid_login ``` #### 二、控制执行顺序 pytest 默认按以下顺序执行: 1. **目录排序**:按字母顺序执行测试目录 2. **文件排序**:按文件名顺序执行测试文件 3. **用顺序**:按测试函数/方法在文件中出现的顺序执行(不同于 unittest 的 ASCII 顺序)[^1] 若要自定义顺序,可使用插件 `pytest-ordering`: ```bash pip install pytest-ordering ``` 在测试用上添加装饰器: ```python @pytest.mark.run(order=1) # 指定执行顺序 def test_first(): assert True ``` #### 三、通过标记筛选用 1. **标记测试用** ```python import pytest @pytest.mark.smoke # 自定义标记 def test_login(): assert True ``` 2. **执行带标记的用** ```bash pytest -m smoke # 只执行 smoke 标记的用 pytest -m "not smoke" # 排除 smoke 标记的用 ``` #### 四、常用执行参数 | 参数 | 作用 | 示 | |------|------|------| | `-v` | 显示详细输出 | `pytest -v` | | `-k` | 关键字筛选用 | `pytest -k "login"` | | `-x` | 遇到失败立即停止 | `pytest -x` | | `--maxfail=n` | 最大失败数 | `pytest --maxfail=3` | | `--html=report.html` | 生成 HTML 报告 | 需安装 `pytest-html` | #### 五、执行 假设有测试文件 `test_sample.py`: ```python # test_sample.py def test_a(): print("执行 test_a") def test_b(): print("执行 test_b") class TestDemo: def test_c(self): print("执行 test_c") ``` 执行命令和输出: ```bash $ pytest -v test_sample.py ============================ test_sample.py::test_a PASSED test_sample.py::test_b PASSED test_sample.py::TestDemo::test_c PASSED ``` ### 注意事项 1. 测试文件/函数/类必须符合命名规范(`test_*` 或 `*_test`)[^4] 2. 测试类中不能定义 `__init__` 方法[^4] 3. 使用 `conftest.py` 文件管理共享的 fixture(如前置操作) ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值