Pytest测试框架1

目录:

  • 1.pytest简介、安装与准备
  • 2.pytest命名规则
  • 3.pycharm配置与界面化运行
  • 4.pytest测试用例结构
  • 5.pytest测试用例断言
  • 6.pytest测试框架结构
  • 7.计算器实战

1.pytest简介、安装与准备

前言

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

 Pytest 是什么?

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

为什么要选择 Pytest?

  • 丰富的第三方插件
    • 报告
    • 多线程
    • 顺序控制
  • 简单灵活
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 4
  • 兼容 unittest
  • 定制化插件开发

Pytest 环境安装

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

 运行第一个脚本

def inc(x):
    return x + 1


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

Pytest测试框架1_第1张图片

实操

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

2.pytest命名规则

Pytest 有哪些格式要求?

  • 文件名
  • 方法/函数

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

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

3.pycharm配置与界面化运行

Pycharm 界面化安装 Pytest

Pytest测试框架1_第2张图片

Pycharm 默认测试执行器为Pytest

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

Pytest测试框架1_第3张图片

4.pytest测试用例结构

三部分构成

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

测试用例示例 

class TestXXX:
    def setup(self):
        # 资源准备
        pass

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

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

5.pytest测试用例断言

什么是断言?

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

Pytest测试框架1_第4张图片

断言的用法

  • 断言写法
    • assert <表达式>
    • assert <表达式>,<描述>

示例 1 

def test_a():
    assert True

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

示例 2

def test_c():
    a = 1
    b = 1
    c = 2
    assert 'abc' in "abcd"

import sys

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

6.pytest测试框架结构

测试装置介绍

类型 规则
setup_module/teardown_module 全局模块级
setup_class/teardown_class 类级,只在类中前后运行一次
setup_function/teardown_function 函数级,在类外
setup_method/teardown_method 方法级,类中的每个方法执行前后
setup/teardown 在类中,运行在调用方法的前后(重点)
def setup_module():
    print('资源准备:setup module')


def teardown_module():
    print('资源准备:teardown module')


def test_case1():
    print('case1')


def test_case2():
    print('case2')


def setup_function():
    print('资源准备:setup function')


def teardown_function():
    print('资源销毁:teardown function')


class TestDemo:
    # 执行类前后分别执行setup_class teardown_class
    def setup_class(self):
        print("TestDemo setup-class")

    def teardown_class(self):
        print("TestDemo teardown_class")

    # 每个类里面的方法前后分别执行setup, teardown
    def setup(self):
        print('TestDemo setup')

    def teardown(self):
        print('TestDemo teardown')

    def test_demo1(self):
        print('test demo1')

    def test_demo2(self):
        print('test demo2')

7.计算器实战

项目简介

计算器是近代人发明的可以进行数字运算的机器。 计算器通过对加法、减法、乘法、除法等功能的运算,将正确的结果展示在屏幕上。 可帮助人们更方便的实现数字运算。一般情况下计算器除显示计算结果外,还常有溢出指示、错误指示等功能。

知识点

  • 测试流程与需求分析
  • bug 提交与管理
  • Pytest 测试框架基本用法
  • 参数化
  • 异常处理
  • 标签、跳过用例
  • 结合 Allure 生成测试报告与项目总结
  • 数据驱动
  • pytest fixture 实现测试装置及参数化
  • pytest conftest.py 的用法
  • pytest 文件配置 pytest.ini
  • 使用第三方插件控制用例的执行顺序,分布式并发执行
  • 使用分层思想,实现框架的合理构建
  • 了解内置插件 hook 体系,实现插件开发

操作内容 

  1. 完整的测试流程,包含需求分析、测试计划设计、测试用例编写、测试执行、bug 的提交与管理。
  2. 使用思维导图完成需求分分析;提供完整测试计划模板,完成测试计划设计;应用多种测试用例设计方法,包括:等价类、边界值、错误推测法等。
  3. 测试执行过程中应用多种测试方法完成计算器的加法、除法运算。
  4. 结合项目管理工具完成 bug 的提交与管理,进行测试报告编写与项目总结。
  5. 编写自动化测试用例,结合 Allure 与截图技术等自动生成带截图与操作步骤的测试报告。
  6. 使用参数化减少代码量,提高代码的可维护性。
  7. 使用 mark 标签为测试用例分类
  8. 设置跳过、预期失败用例
  9. 对异常用例进行处理
  10. 掌握 Pytest 常用的装饰器,例如:添加标签、参数化、Fixture 等。
  11. 掌握 Pytest 自动化测试框架多种复杂配置,比如 pytest.ini 配置、conftest.py 配置等。
  12. 合理使用第三方插件,控制测试用例的执行顺序、分布式并发执行等场景。
  13. 掌握分层思想实现用例的分层,实现测试装置,测试数据,测试日志,测试报告等合理的框架构建。
  14. 开发一个插件,实现命令行传递参数

 

你可能感兴趣的:(Python,pytest)