软件测试/测试开发丨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 下执行"

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

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

相关推荐
不染_是非27 分钟前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
z2014z28 分钟前
系统架构设计师教程 第5章 5.4 软件测试 笔记
笔记·系统架构
Midsummer啦啦啦39 分钟前
NumPy库学习之argmax函数
学习·numpy
Mero技术博客42 分钟前
第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
数据库·学习·缓存
&AtTiTuDe;1 小时前
如何使用IIC外设(硬件IIC)
经验分享·笔记·stm32·单片机·嵌入式硬件·硬件工程
QuantumYou1 小时前
【对比学习串烧】 SWav和 BYOL
学习·机器学习
快把我骂醒1 小时前
S-Procedure的基本形式及使用
笔记
为暗香来1 小时前
MySQL学习(视图总结)
数据库·学习·mysql
神即道 道法自然 如来2 小时前
Python+Pytest框架,“api_key.py文件怎么编写“?
python·pytest
一道秘制的小菜2 小时前
C++第十一节课 new和delete
开发语言·数据结构·c++·学习·算法