【pytest 实战】命令行传参+参数化测试

关于这篇文章

记录我在工作的 pytest 实践经验,类似于 How to …

  • 【不是】以 pytest 功能为导向的文档
  • 【是】以我工作时遇到问题为导向来组织文档
  • 配合本代码库:https://github.com/paperplane110/easy_pytest
  • 一边看一边敲命令,能更好理解

希望能帮助到大家 🤝

各位好,欢迎各位来关注我的个人网站:https://tyyuan110.com/
我目前就职于 DiDi 自动驾驶,从事测试开发,我会在上面定期更新相关技术博客(前端、测开、面经等),谢谢!

目录

0. 安装本项目(可跳过)

git clone
cd learn_pytest
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

1. 组织测试项目

面对一个空文件夹、一个被测对象,我遇到的第一个问题就是,我如何组织测试项目,如何组织测试脚本。

按照文档指导,我总结了以下规则:

测试项目的结构

  • 测试项目 tests/ 与源码 src/ 平级
  • 测试项目 tests/ 可组织任意层级的子文件夹
  • 测试项目 tests/ 必须包含 __init__.py 文件,否则 pytest 无法识别测试脚本

测试脚本的命名规则

  • pytest 无法识别 test.py 文件
  • 测试脚本 test_*.py 必须以 test_ 开头,否则 pytest 无法识别测试脚本
  • 测试脚本 *_test.py 必须以 _test 结尾,否则 pytest 无法识别测试脚本
.
├── README.md
├── src                 <--- 源码项目
│  └── package
│     ├── __init__.py
│     └── main.py
└── tests               <--- 测试项目
   ├── __init__.py
   └── test_suite_1     <--- 测试套件
      ├── __init__.py
      └── test_main.py  <--- 测试脚本

现在我们试着来进行第一次测试:

# -v 打印更多信息,显示测试 parent_suite and case_name
pytest -v
# ...
# ==================== test session starts =====================
# tests/suite_1/test_main.py::test_plus_int PASSED  [ 25%]
# tests/suite_1/test_main.py::test_plus_float PASSED   [ 50%]
# tests/suite_1/test_main.py::test_minus_int PASSED  [ 75%]
# tests/suite_1/test_main.py::test_minus_float PASSED  [100%]
# ===================== 4 passed in 0.01s =======================

2. 测试函数的组织

现在我们来看下我们的测试脚本 test_main.py

import pytest
from src.package.main import plus, minus

def test_plus_int():
    assert plus(1, 2) == 3
def test_plus_float():
    ...
def test_minus_int():
    ...
def test_minus_float():
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值