当前位置: 首页 > article >正文

四十、Python(pytest框架-下)

一、pytest 断言

断言:使用程序代码代替人工自动的判断预期结果和实际结果是否相符,断言结果为 True,表示用例通过,断言结果为 False,抛出 AssertionError 异常,说明用例不通过。

在pytest中断言使用关键字assert:assert 表达式 # if语句后边写的表达式,都可以写在这里

常用的断言有两种:

  • 断言是否相等:assert 预期结果 == 实际结果

  • 判断是否包含:assert 预期 in 实际

import pytest


class TestDemo:

    def test_01_demo(self):
        print('测试1')
        assert 'test' == 'test'  # 断言字符串相等

    def test_02_demo(self):
        print('测试2')
        my_list = [1, 2, 3, 4, 5]
        assert 3 in my_list  # 断言包含关系

    def test_03_demo(self):
        print('测试3')
        my_list = [1, 2, 3, 4, 5]
        assert 6 in my_list  

运行结果

二、参数化

在测试方法中,使用数据的地方,可以使用参数来代替,然后在运行的时候传递实参值。

操作步骤

  • 将用例中的数据变为参数书写

  • 组织测试数据 -> [(), (), ()] 或者 [[], []],内部的元组或者列表就是一组测试数据

  • 使用装饰器完成参数化

@pytest.mark.parametrize('参数1, 参数2, ...', 测试数据)

@pytest.mark.parametrize(['参数1', '参数2', ...], 测试数据)

import pytest
from tools.tools import add

data = [(0, 1, 1), (1, 3, 4), (7, 2, 9)]


class TestAdd:
    # 1. 将用例中的数据 变为参数书写
    # 3. 使用装饰器完成参数化
    # @pytest.mark.parametrize('x,y,z',data)
    @pytest.mark.parametrize(['x', 'y', 'z'], data)
    def test_add_1(self, x, y, z):
        # 判断预期结果和实际结果是否相等
        assert z == add(x, y)

json文件实现参数化

import pytest
import json

from tools.tools import add


# 封装一个读取json文件的方法,返回列表数据
def read_json():
    with open('data.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    print(data)
    return data


class TestAdd:

    @pytest.mark.parametrize(['x', 'y', 'z'], read_json())
    def test_add_1(self, x, y, z):
        assert z == add(x, y)

定义的json文件

[
  [0, 1, 1],
  [1, 3, 4],
  [7, 2, 9]
]


http://www.kler.cn/a/399979.html

相关文章:

  • std::sort的底层原理(混合排序算法)
  • 图像基础算法学习笔记
  • workerman的安装与使用
  • docker 安装之 windows安装
  • DB Type
  • 【C++】红黑树封装map—set
  • github进不去解决办法-误打误撞进去了
  • Redis GEO 功能解析
  • Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • Stable Diffusion概要讲解
  • Jenkins的pipeline Script的 每个组件的详细讲解
  • LangChain学习--LangChain-chatchat代码研读
  • 2024年09月CCF-GESP编程能力等级认证Python编程二级真题解析
  • 爬虫——数据解析与提取
  • 高阶C语言之六:程序环境和预处理
  • 解决 IDEA 修改代码重启不生效的问题
  • 自动驾驶系列—面向自动驾驶的模型迭代:工具、平台与最佳实践
  • 矩阵的对角化特征值分解
  • 【网络云计算】2024第46周小测第2次-Shell编程类简要解析
  • 刘艳兵-DBA044-关于cardinality的描述,正确的是?
  • .NET 通过模块和驱动收集本地EDR的工具
  • org.springframework.context.support.ApplicationListenerDetector 详细介绍
  • Thinkphp-Laravel在线教育系统设计与实现us5uu
  • jenkins使用cli发行uni-app到h5
  • Spring Boot汽车资讯:速度与信息的融合
  • 【PSQLException: An I/O error occurred while sending to the backend.】