写点什么

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

作者:测试人
  • 2023-05-05
    北京
  • 本文字数:1397 字

    阅读完需:约 5 分钟

本文为霍格沃兹测试开发学社学员笔记分享

原文链接:Pytest 测试框架L1 - 学习笔记 - 测试人社区

前言

  • 自动化测试前,需要提前准备好数据,测试完成后,需要自动清理脏数据,有没有更好用的框架?

  • 自动化测试中,需要使用多套测试数据实现用例的参数化,有没有更便捷的方式?

  • 自动化测试后,需要自动生成优雅、简洁的测试报告,有没有更好的生成方法

Pytest 背景与优势

Pytest 是什么?

  • pytest 能够支持简单的单元测试和复杂的功能测试;

  • pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;

  • 使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。

  • pytest 支持 315 种以上的插件;

为什么要选择 Pytest

  • 丰富的第三方插件报告多线程顺序控制




为什么要选择 Pytest

  • 简单灵活

# content of test_sample.pydef inc(x):    return x + 1

def test_answer(): assert inc(3) == 5
复制代码

为什么要选择 Pytest

  • 兼容 unittest

  • 定制化插件开发



Pytest 安装与准备

Pytest 环境安装

  • 前提:本地已配置完成 Python 环境

  • 第一种方式 pip install pytest

  • 第二种方式 PyCharm 直接安装

运行第一个脚本

# content of test_sample.pydef 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 测试用例编写规则是什么?

练习

  • (多选)下面哪个测试方法,符合 pytest 命名规范 A、测试类 TestDemoB、测试方法 test_demoC、测试文件 testdemoD、测试包 test_demo


    答案:ABD

3、pycharm 配置与界面化运行

Pycharm 界面化安装 Pytest


Pycharm 默认测试执行器为 Pytest

  1. 进入 Tools->Python Intergrated Tools

  2. 选择 Default test runner 为 pytest


4、pytest 用例结构

用例结构

  • 三部分构成用例名称用例步骤用例断言

测试用例示例

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

类级别的用例示例

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 <表达式>,<描述>

assert <bool expression>;       assert <bool expression> : <message>;    
复制代码

示例 1

  • 第一种:assert <表达式>

  • 第二种:assert <表达式>,<描述>

def test_a():    assert True
def test_b(): a = 1 b = 1 c = 2 assert a + b == c, f"{a}+{b}=={c}, 结果为真"
复制代码

示例 2

  • assert <表达式>

def test_c():    a = 1    b = 1    c = 2    assert 'abc' in "abcd"
import sysdef test_plat(): assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"
复制代码


发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Pytest 测试框架学习笔记_软件测试_测试人_InfoQ写作社区