小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • Python 编程精华文章

    • Python 编程精华文章
    • 1. Python 基础语法面试怎么准备
    • 2. 列表元组字典集合怎么区分
    • 3. Python 字符串常用操作怎么用
    • 4. 函数参数和返回值怎么理解
    • 5. 异常处理在测试脚本中怎么用
    • 6. 文件读写和数据驱动测试
    • 7. Pytest 基础用法怎么讲
    • 8. Pytest fixture 怎么理解
    • 9. Python 接口测试脚本怎么写
    • 10. Python 自动化框架能力怎么提升
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

7. Pytest 基础用法怎么讲

Pytest 是 Python 自动化测试中非常常用的测试框架。相比直接写普通脚本,Pytest 可以帮助我们组织用例、执行用例、生成结果、参数化数据、管理前后置、集成报告。测试工程师准备 Pytest 面试,不要只说“Pytest 是测试框架”,而要讲清楚它在接口自动化项目中怎么用。

面试中常问 Pytest 的用例命名规则、断言、执行方式、参数化、fixture、跳过用例、失败重跑、报告集成等。基础回答要围绕“如何组织和运行自动化用例”。

一、Pytest 解决什么问题

普通 Python 脚本也能调接口和断言,但缺少测试框架能力。Pytest 提供:

  • 自动发现测试用例;
  • 执行用例并统计结果;
  • 支持 assert 断言;
  • 支持参数化;
  • 支持 fixture 前后置;
  • 支持插件扩展;
  • 可集成 Allure 报告;
  • 支持失败重跑、并发执行等。

所以 Pytest 是自动化框架的核心执行层。

二、用例命名规则

Pytest 默认识别:

  • 文件名:test_*.py 或 *_test.py;
  • 函数名:test_ 开头;
  • 类名:Test 开头;
  • 类中的方法:test_ 开头。

例如:

def test_login_success():
    assert 1 == 1

如果命名不符合规则,Pytest 可能不会执行。

三、断言怎么写

Pytest 直接使用 Python 的 assert。

def test_status_code():
    status_code = 200
    assert status_code == 200

接口自动化中常见断言:

assert response.status_code == 200
assert result["code"] == 0
assert result["data"] is not None

断言要覆盖 HTTP 状态码、业务 code、关键字段和数据库结果。

四、执行方式

命令行执行:

pytest

执行指定文件:

pytest test_login.py

执行指定用例:

pytest test_login.py::test_login_success

显示详细信息:

pytest -v

输出打印:

pytest -s

五、参数化怎么用

参数化适合一套逻辑跑多组数据。

import pytest

@pytest.mark.parametrize("username,password,expected", [
    ("tester", "123456", 0),
    ("tester", "wrong", 1001),
])
def test_login(username, password, expected):
    assert isinstance(username, str)
    assert expected in [0, 1001]

接口自动化中,参数化可以结合 JSON、YAML、Excel 测试数据。

六、fixture 基础作用

fixture 用于前置和后置。

比如登录获取 Token、准备测试数据、清理测试数据。

import pytest

@pytest.fixture
def token():
    return "mock_token"

def test_order(token):
    assert token != ""

更复杂的 fixture 会在下一篇详细讲。

七、用例跳过和标记

跳过用例:

import pytest

@pytest.mark.skip(reason="暂不执行")
def test_demo():
    assert True

条件跳过:

@pytest.mark.skipif(True, reason="条件满足时跳过")
def test_skip_if():
    assert True

标记用例:

@pytest.mark.smoke
def test_login():
    assert True

可以按标记执行冒烟用例。

八、Pytest 在接口自动化中的结构

常见结构:

testcases/
  test_login.py
  test_order.py
common/
  request_util.py
  assert_util.py
data/
  login_cases.json
conftest.py
pytest.ini

Pytest 负责编排执行,用例中调用封装好的请求方法和断言方法。

九、常见插件

常见插件包括:

  • pytest-html:生成 HTML 报告;
  • allure-pytest:生成 Allure 报告;
  • pytest-rerunfailures:失败重跑;
  • pytest-xdist:并发执行;
  • pytest-ordering:控制执行顺序。

面试中不用每个都精通,但要知道常用插件能解决什么问题。

十、常见错误

1. 用例命名不规范

导致 Pytest 找不到用例。

2. 断言太少

只断言状态码 200,不断言业务结果。

3. 用例互相依赖

一个用例失败导致后面全失败,稳定性差。

4. fixture 滥用

所有逻辑都塞到 fixture,导致用例不清晰。

5. 不区分环境数据

测试环境、预发环境配置混乱,执行结果不稳定。

十一、面试回答模板

如果面试官问“Pytest 基础用法怎么讲”,可以这样回答:

Pytest 是 Python 自动化测试常用框架,主要用于组织、发现和执行测试用例。它默认识别 test_ 开头的文件和函数,用 Python 原生 assert 做断言,支持命令行执行、参数化、fixture 前后置、用例标记和插件扩展。在接口自动化中,我会用 Pytest 管理测试用例,用参数化驱动多组测试数据,用 fixture 处理登录 Token、测试数据准备和清理,再结合 Allure 或 HTML 报告输出结果。断言不只看 HTTP 状态码,还会校验业务 code、关键字段和必要的数据库结果。

十二、练习清单

  1. 安装 pytest;
  2. 写一个 test_ 开头用例;
  3. 使用 assert;
  4. 用 pytest -v 执行;
  5. 执行指定文件;
  6. 使用参数化;
  7. 写一个 fixture;
  8. 标记 smoke 用例;
  9. 生成测试报告;
  10. 准备 Pytest 面试回答。

Pytest 的核心价值是让自动化用例可组织、可执行、可扩展。基础用法必须和接口自动化项目结构结合起来理解。

配套刷题:

  • Python测试开发面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
6. 文件读写和数据驱动测试
Next
8. Pytest fixture 怎么理解