软件测试/测试开发丨Pytest 测试框架学习笔记

前言

  • 自动化测试前,需要提前准备好数据,测试完成后,需要自动清理脏数据,有没有更好用的框架?
  • 自动化测试中,需要使用多套测试数据实现用例的参数化,有没有更便捷的方式?
  • 自动化测试后,需要自动生成优雅、简洁的测试报告,有没有更好的生成方法

Pytest 背景与优势

Pytest 是什么?

  • pytest 能够支持简单的单元测试和复杂的功能测试;
  • pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;
  • 使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。
  • pytest 支持 315 种以上的插件;

为什么要选择 Pytest

  • 丰富的第三方插件

    • 报告
    • 多线程
    • 顺序控制

为什么要选择 Pytest

  • 简单灵活
python 复制代码
# content of test_sample.py
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 5

为什么要选择 Pytest

  • 兼容 unittest
  • 定制化插件开发

Pytest 安装与准备

Pytest 环境安装

  • 前提:本地已配置完成 Python 环境
  • 第一种方式 pip install pytest
  • 第二种方式 PyCharm 直接安装

运行第一个脚本

python 复制代码
# content of test_sample.py
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 5

实操

  • 1、创建目录 Desktop(桌面)/pytestdemo1
  • 2、创建文件 test_first.py
  • 3、打开【terminal】 /【命令提示行 cmd】
  • 4、运行 pytest 回车

2、Pytest 命名规则

Pytest 有哪些格式要求?

  • 文件名
  • 类
  • 方法/函数

Pytest 测试用例编写规则是什么?

类型 规则
文件 test_开头 或者 _test 结尾
类 Test 开头
方法/函数 test_开头
注意:测试类中不可以添加__init__构造函数

练习

  • (多选)下面哪个测试方法,符合 pytest 命名规范

    • A、测试类 TestDemo
    • B、测试方法 test_demo
    • C、测试文件 testdemo
    • D、测试包 test_demo
      答案:ABD

3、pycharm 配置与界面化运行

Pycharm 界面化安装 Pytest

Pycharm 默认测试执行器为Pytest

  1. 进入 Tools->Python Intergrated Tools
  2. 选择 Default test runner 为 pytest

4、pytest 用例结构

用例结构

  • 三部分构成

    • 用例名称
    • 用例步骤
    • 用例断言

测试用例示例

python 复制代码
def test_XXX(self):
    # 测试步骤1
    # 测试步骤2
    # 断言  实际结果 对比 预期结果
    assert ActualResult == ExpectedResult

类级别的用例示例

python 复制代码
class TestXXX:
    def setup(self):
        # 资源准备
        pass

    def teardown(self):
        # 资源销毁
        pass

    def test_XXX(self):
        # 测试步骤1
        # 测试步骤2
        # 断言  实际结果 对比 预期结果
        assert ActualResult == ExpectedResult

5、pytest 用例断言

pytest 测试用例断言

  • 什么是断言
  • 断言的用法

什么是断言

断言(assert),是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果。当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。

断言的用法

  • 断言写法

    • assert <表达式>
    • assert <表达式>,<描述>
python 复制代码
assert <bool expression>;       
assert <bool expression> : <message>;    

示例 1

  • 第一种:assert <表达式>
  • 第二种:assert <表达式>,<描述>
python 复制代码
def test_a():
    assert True

def test_b():
    a = 1
    b = 1
    c = 2
    assert a + b == c, f"{a}+{b}=={c}, 结果为真"

示例 2

  • assert <表达式>
python 复制代码
def test_c():
    a = 1
    b = 1
    c = 2
    assert 'abc' in "abcd"

import sys
def test_plat():
    assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
Z21-X1 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla9 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞11 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水14 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd14 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
猴哥聊项目管理17 小时前
自动化测试管理工具实战:从手工测试到自动化提效的转型路径
自动化测试·测试用例管理·测试管理工具·自动化测试管理工具·手工测试转型
Zhao-Jichao18 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李18 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga19 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd19 小时前
秋招学习笔记 day106
笔记·学习