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

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

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

相关推荐
我爱挣钱我也要早睡!3 小时前
Java 复习笔记
java·开发语言·笔记
知识分享小能手5 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
汇能感知7 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun8 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao8 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾8 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT9 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa9 小时前
HTML和CSS学习
前端·css·学习·html
测试老哥9 小时前
6个步骤实现Postman接口压力测试
自动化测试·软件测试·测试工具·测试用例·接口测试·压力测试·postman