python基础(11)《Allure报告中的组件用法》

news2024/10/22 8:06:11

使用

官方教程:https://docs.qameta.io/allure

入门

想要看到allure报告,需要做2个步骤: 1、pytest执行时关联allure:pytest命令带上--alluredir 结果存放目录--alluredir=结果存放目录; 2、打开执行报告:allure serve 结果存放目录

文件目录如下:

test_allure.py文件代码如下:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6


def test_add_positive():
    assert 1 + 3 == 4

def test_add_negative():
    assert -1 + -3 == -4

main.py文件代码如下:

import os

import pytest
import time

if __name__ == '__main__':
    #使用pytext-html生成测试报告
    # pytest.main(['-v','--html=测试报告.html','./'])
    #使用allure生成测试报告

    pytest.main(["./",
                 "-sv", "--alluredir", "./report/temp_jsonreport"])
    os.system("allure generate ./report/temp_jsonreport -o ./report/html --clean")
    '''
    具体:
        1、"./"这个是你测试用例的路径,比如我的所有的测试用例都在这个文件夹下,这个文件下又有很多每个用例的文件夹,那你如果想执行所有的用例就写到"./
        "这个路径就可以了,如果是想要执行这个文件下的某个用例,就写到具体的那个文件的路径。
        2、-s表示结果显示。-v表示显示详细用例
        2、"--alluredir"这个是创建allure报告的路径。
        3、-o是执行,--clean是清除之前生成的报告。
        main.py整理好了,可以执行main文件,用例执行完成后,在report文件夹下会有两个文件夹:html、temp_jsonreport。在html这个文件夹下,找到index.html文件,这个就是我们生成的测试报告,右键用浏览器打开就可以看到了。

    '''

执行后的效果如下:

allure报告如下:

效果如下:

allure装饰器

allure提供了一些装饰器,比较常用的如下:

@Epic:用于定义测试用例所属的史诗(Epic)级别,通常用于对测试用例进行分类和组织。
@Feature:用于定义测试用例所属的特性(Feature)级别,通常用于对测试用例进行更详细的分类和组织。
@Story:用于定义测试用例所属的故事(Story)级别,通常用于对测试用例进行更详细的描述和组织。
@Severity:用于定义测试用例的严重程度,可以是BLOCKER、CRITICAL、NORMAL、MINOR或TRIVIAL等级别。
@Description:用于为测试用例添加描述信息,可以提供更详细的说明和背景信息。
@Step:用于定义测试用例中的一个步骤,可以在报告中展示每个步骤的执行情况和结果。
@Attachment:用于添加附件到测试报告中,可以是截图、日志文件等。
@Link:用于添加链接到测试报告中,可以是相关文档、需求或其他资源的链接。
@Issue:用于添加缺陷或问题的链接到测试报告中。
@TmsLink:用于添加测试管理系统(Test Management System)中的链接到测试报告中。

方法

参数值

参数说明

@allure.epic(*epics)

epic描述

定义项目,当由多个项目时使用,一般传参一个字符串,表示项目名称。往下时feature

@allure.feature(*features)

分支

用例按照模块区分(类似于一个业务分了几个步骤/功能),一般传参一个字符串,表示分支名称。

@allure.story(*stories)

故事

类似于场景(即一个功能分为几个方面去验证),一般传参一个字符串,表示场景名称。

@allure.title(test_title)

用例标题

给指定的用例设置名称,在测试报告中,展示的用例名称不是函数名称,是设置的test_title

@allure.testcase(url, name=None)

用例相关链接

设置用例存放的地址,方便访问对应用例详情,name不为None时,文本显示为name,否则显示用例所在url

@allure.issue(url, name=None)

缺陷地址

对应缺陷管理系统里的缺陷地址,用法于testcase的类似

@allure.description(test_description)

用例描述

test_description参数里说明了当前用例的详细内容,比如说前置条件、验证场景、预期结果等需要关注的内容

@allure.link(url, link_type='link', name=None)

定义连接

用于定义一个需要在测试报告中展示的连接,url和name参数逻辑与allure.testcase()的一致,link_type默认是link,可为issue、test_case,设置为issue

allure.attach(body, name=None,attachment_type=None,extension=None)

按照附件形式添加展示

将python对象按照指定的附件类型展示在报告中,可支持的attachment_type(附件类型)在allure.attachment_type

allure.attach.file(source, name=None, attachment_type=None, extension=None)

添加附件

将文件按照指定的附件类型读取并展示到报告中,可支持的attachment_type(附件类型)在allure.attachment_type

1、@allure.epic(*epics)和@allure.feature(*features)

在`pytest`中,使用Allure报告来增加测试报告的信息量是一种常见做法。`@allure.epic()`注解用于标识测试用例属于哪个较高层次的特性或者功能模块,比如一个项目被划分为多个模块或者服务,每个模块或服务可以视为一个`epic`。

在pytest中使用Allure报告时,`@allure.epic`和`@allure.feature`注解(或装饰器)用于组织和分类测试用例,帮助生成更加结构化和详细的测试报告。

示例:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest


# 使用@allure.epic装饰器来标注测试用例属于哪个"Epic"
@allure.epic("用户管理")
class TestUserManagement(object):

    # 使用@allure.feature装饰器来进一步细分"Epic"下的功能
    @allure.feature("添加用户")
    def test_add_user(self):
        # 添加用户的测试代码
        assert True, "添加用户功能,断言成功"

    @allure.feature("删除用户")
    def test_delete_user(self):
        # 删除用户的测试代码
        assert True, "删除用户功能,断言成功"


@allure.epic("订单管理")
class TestOrderManagement(object):

    @allure.feature("创建订单")
    def test_create_order(self):
        # 创建订单的测试代码
        assert True, "创建订单功能,断言成功"

    @allure.feature("取消订单")
    def test_cancel_order(self):
        # 取消订单的测试代码
        assert True, "取消订单功能,断言成功"

结果如下:

2、@allure.story(*stories)和@allure.Step()

在`pytest`中结合`allure`进行测试报告生成时,`@allure.story(*stories)`注解用于为测试用例指定一个或多个故事(即功能模块或用户故事),以便在报告中更好地组织和分类测试。这能帮助团队理解测试的目的和覆盖的功能范围。

在pytest中使用allure注解可以帮助我们更好地组织和报告测试结果。`@allure.story(*stories)`用于将测试用例归类到不同的故事(或用户故事)中,而`@allure.step()`用于在测试中注明每个小步骤或操作,以增强测试报告的可读性和详细程度。

示例代码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest

@allure.epic("用户管理")
@allure.feature("登录功能")
@allure.story("登录成功")
def test_login_success():
    with allure.step("步骤1: 打开登录页面"):
        # 假设这里是打开登录页面的操作
        open_login_page()
    
    with allure.step("步骤2: 输入用户名和密码"):
        # 假设这里是输入用户名和密码的操作
        input_credentials(username="user", password="password")
    
    with allure.step("步骤3: 点击登录按钮"):
        # 假设这里是点击登录按钮的操作
        click_login_button()
    
    with allure.step("步骤4: 验证登录成功"):
        # 假设这里是验证登录成功的操作
        assert login_successful()

@allure.epic("用户管理")
@allure.feature("登录功能")
@allure.story("登录失败")
def test_login_failure():
    with allure.step("输入无效的用户名和密码"):
        # 假设测试登录失败的逻辑
        assert login_failed()

def open_login_page():
    pass

def input_credentials(username, password):
    pass

def click_login_button():
    pass

def login_successful():
    # 假设登录成功
    return True

def login_failed():
    # 假设登录失败
    return False

如图:

3、@allure.title(test_title)和@allure.description(test_description)

在`pytest`中使用`allure`注解组件的`@allure.title(test_title)`和`@allure.description(test_description)`可以帮助我们在生成的测试报告中添加更丰富的信息,让测试的目的和细节更加清晰。

通过`@allure.title`和`@allure.description`注解,你的Allure报告将会包含每个测试用例的标题和详细描述,

源码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure

@allure.title("测试登录功能")
@allure.description("""
这个测试用例会测试登录功能,包括如下几点:
1. 输入正确的用户名和密码可以成功登录。
2. 输入错误的密码将不能登录。
""")
def test_login_success():
    assert True  # 代表登录成功的逻辑

@allure.title("测试产品添加功能")
@allure.description("这个测试用例验证是否能成功添加一个新产品到系统中")
def test_add_product():
    assert True  # 代表添加产品成功的逻辑

如图:

4、@Severity

在pytest中,使用Allure报告可以通过各种注解(装饰器)来丰富测试报告的内容,增加可读性和详细程度。`@allure.severity`是其中一个重要的注解,用于指定测试用例的重要性或严重性等级。Allure框架定义了几个不同的严重性等级,包括`blocker`、`critical`、`normal`、`minor`和`trivial`。

源码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure


# 定义测试类
@allure.feature("登录功能")
class TestLogin:

    # 设置测试的严重性为严重(critical)
    @allure.severity(allure.severity_level.CRITICAL)
    @allure.story("登录成功")
    def test_login_success(self):
        with allure.step("步骤1:输入正确的用户名和密码"):
            # 这里模拟输入操作
            pass
        with allure.step("步骤2:点击登录按钮"):
            # 这里模拟点击操作
            pass
        with allure.step("步骤3:验证是否登录成功"):
            # 这里模拟验证操作
            assert True  # 假设验证成功

    # 设置测试的严重性为较低(minor)
    @allure.severity(allure.severity_level.MINOR)
    @allure.story("忘记密码链接")
    def test_forget_password_link(self):
        with allure.step("检查忘记密码链接是否存在"):
            # 假设检查到链接存在
            assert True

在这个例子中,定义了一个测试类`TestLogin`,它包含两个测试方法。每个测试方法使用`@allure.severity`装饰器指定了测试用例的重要性等级。 -`test_login_success` 这个测试用例使用了`allure.severity_level.CRITICAL`来标记,意味着这是一个关键的、严重的测试,它的成功运行对项目非常重要。 -`test_forget_password_link` 这个测试用例则被标记为`allure.severity_level.MINOR`,表示它的重要程度较低。 通过这种方式,当生成Allure测试报告时,可以很容易地看到每个测试用例的重要性等级,从而快速识别关键问题所在。

5、@allure.testcase(url, name=None)

在pytest中使用Allure进行测试报告生成时,`@allure.testcase`注解可以为测试用例提供一个链接到测试用例或需求说明的功能,这对于追踪测试的覆盖率和理解测试背景非常有用

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure

# 假设一个外部的测试用例或需求文档URL
TEST_CASE_LINK = "https://www.example.com/your-test-case-or-requirement"

@allure.testcase(TEST_CASE_LINK, '测试用例标题或名称')
def test_example_function():
    """
    一个示例测试函数,演示如何使用@allure.testcase注解
    """
    # 假设的测试逻辑
    assert 1 == 1  # 假设这是一个测试断言

如图:

6、@allure.issue(url, name=None)

在pytest中使用Allure报告生成工具时,可以通过`@allure.issue`注解为测试用例添加关联的问题跟踪链接。这对于将测试结果和问题跟踪系统(如JIRA、GitHub issues等)链接起来非常有用,使得从测试报告中直接定位到问题的具体记录变得可行。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库

import allure
import pytest

@allure.issue('https://github.com/issues/1', name='点击此处查看问题详情')
def test_with_issue_link():
    """一个带有问题跟踪链接的测试案例"""
    assert True  # 一个简单的断言

@allure.issue('https://github.com/issues/2')
def test_with_issue_link_no_name():
    """一个带有问题链接但没有指定名称的测试案例"""
    assert 1 == 1  # 又一个简单的断言

在这个示例中,`test_with_issue_link`测试函数通过`@allure.issue`被装饰,指定了一个问题跟踪链接及其名称。而`test_with_issue_link_no_name`只指定了问题链接,没有名称。

7、@allure.link(url, link_type='link', name=None)

在Pytest中使用`allure.link()`注解可以帮助我们在测试报告中添加指向外部资源的链接,比如文档或者问题跟踪链接。这样可以方便地从报告中跳转到相关的在线资源。`allure.link()`提供了一种自定义链接的方式

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
# 引入pytest和allure
import pytest
import allure

# 使用allure.link注解添加外部链接
@allure.link("https://www.testallure.com", name="TestAllure Link")
def test_with_external_link():
    """
    这个测试包含了一个到外部网站的链接。
    """
    # 模拟一个断言
    assert True

8、@allure.attach(body, name=None,attachment_type=None,extension=None)

将python对象按照指定的附件类型展示在报告中,可支持的attachment_type(附件类型)在allure.attachment_type

如何使用`@allure.attach()` 在pytest测试中附加数据到Allure报告中。这个例子会进行一个简单的字符串比较测试,并在测试过程中生成一个文本附件添加到Allure报告中。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest


# 使用装饰器定义一个测试用例
@allure.title("验证字符串附加功能")
def test_string_comparison_with_attachment():
    a = "Hello"
    b = "World"

    # 假如我们想要附上一些额外的信息,比如变量a和b的值
    allure.attach(a, name="String A", attachment_type=allure.attachment_type.TEXT)
    allure.attach(b, name="String B", attachment_type=allure.attachment_type.TEXT)

    # 执行一次简单的断言比较
    assert a == b, "a 和 b 不相等"

在报告中,你会看到测试用例名下有“Attachments”部分,里面包含了两个附件:“String A”和“String B”,点击它们可以查看具体的内容。

9、@allure.attach.file(source, name=None, attachment_type=None, extension=None)

使用`@allure.attach.file`的示例,这个函数用于将文件作为附件添加到Allure测试报告中

首先在当前目录下创建了一个文本文件`example.txt`,然后通过`allure.attach.file`函数将这个文件添加为测试报告的一部分。函数参数中`name`是附件显示的名称,在Allure报告中会用到;`attachment_type`指定附件的类型(在这个例子中是文本);`extension`指定文件的扩展名。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入所需的库
import allure
import pytest

# 定义测试函数
def test_attach_file():
    # 假定这里有一些测试逻辑...

    # 添加一个文件作为附件
    with open("example.txt", "w") as f:
        f.write("这是一个附件文件的示例内容")

    allure.attach.file("example.txt", name="示例附件", attachment_type=allure.attachment_type.TEXT, extension="txt")

    # 假定测试成功完成
    assert True

10、@Attachment

在`pytest`中使用`@allure.attachment`装饰器可以帮助我们将测试用例中的一些额外信息(如日志、截图或文件)附加到测试报告中。这对于调试和测试结果分析非常有用。

import allure
import pytest

# 定义一个附加文本信息的函数
@allure.attachment('这是附加的文本内容', attachment_type=allure.attachment_type.TEXT)
def attach_text(content):
    return content

# 定义一个截图附加函数(假设是截图,这里只是演示,实际使用时需替换为实际的截图代码)
@allure.attachment('这是附加的截图', attachment_type=allure.attachment_type.PNG)
def attach_screenshot(screenshot):
    return screenshot

# 测试用例
def test_with_attachments():
    # 附加一些文本
    attach_text("这是一段示例文本。")
    # 附加一个“截图”
    attach_screenshot(b"This is a mock screenshot")  # 实际使用时,请确保这里是图片的byte内容

11、@TmsLink

在pytest中使用@TmsLink注解需要在测试用例中使用@allure.link注解可以将测试用例关联到指定的TMS系统中。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure

@allure.link("http://www.example.com/test_case_001")
def test_case_001():
    assert 1 == 1

@allure.link("http://www.example.com/test_case_002")
def test_case_002():
    assert 2 == 2

@allure.link("http://www.example.com/test_case_003")
@allure.link("http://www.example.com/test_case_004")
def test_case_003():
    assert 3 == 3

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端性能优化 | CDN缓存

前言 CDN(Content Delivery Network)是一种分布式的网络架构,通过在全球各地部署节点服务器来快速传输和分发网络内容。CDN的主要目标是提供快速、可靠的内容传输,以提升用户体验。 本文主要从以下方面讲解CDN 什么是CDNCDN的作…

利用GPT开发应用003:GPT分词和预测

文章目录 一、概率问题二、令牌(分词)三、预测 一、概率问题 像 GPT 这样的大型语言模型接收一个提示,并返回通常在上下文中有意义的输出。例如,提示可以是“今天天气很好,所以我决定”(“The weather is n…

vite项目修改node_modules

问题详情 在使用某个依赖的时候遇到了bug,提交issue后不想一直等待到作者更新版本,所以寻求临时自己解决 问题解决 在node_modules里找到需要修改的依赖,修改想要修改的代码 修改后记得保存 然后在node_modules里找到.vite文件夹&#x…

便捷在线导入:完整Axure元件库集合,让你的设计更高效!

Axure元件库包含基本的工具组件,可以使原型绘制节省大量的重复工作,保持整个设计页面的一致性和标准化,同时显得专业。Axure元件库就像我们日常生活中的门把手、自行车踏板和桌子上的螺丝钉,需要组装才能使用。作为一名成熟的产品…

java集合(泛型数据结构)

1.泛型 1.1泛型概述 泛型的介绍 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: …

职工医疗报销管理系统

目录 1 系统目标与范围说明... 0 1.1项目名称... 0 1.2问题说明... 0 1.3项目目标... 0 1.4项目范围... 0 1.5初步想法... 0 1.6可行性研究计划... 0 2 可行性分析报告... 1 2.1系统概述... 1 2.2可行性分析... 2 2.3结论意见... 2 3 项目开发计划... 2 3.1系统…

【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)

一、功能名词简介和显示规则 Alpha Tag&#xff1a;运营商名称标识符&#xff0c;也是用于标识运营商的一个名称。客户需求描述常用名词&#xff0c;对开发而言都是SPN/PLMN功能模块的内容&#xff0c;状态栏左上角的运营商名称显示。 SPN相关文章&#xff1a; 【笔记】SPN和…

Java on VS Code 2月更新|创建 Maven 模块支持,项目管理体验优化!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到2024年2月的 Visual Studio Code Java 更新&#xff01;在本篇博客中&#xff0c;我们将分享项目管理体验的改进以及 Maven 多模块…

【MySQL | 第三篇】MySQL索引及两种索引分类方法总结

文章目录 3.MySQL索引及两种索引分类方法3.1索引的概念3.1.1相关定义3.1.2查询例子 3.2索引的底层3.2.1二叉树&#xff08;1&#xff09;满二叉树&#xff08;2&#xff09;完全二叉树&#xff08;3&#xff09;二叉查找树&#xff08;4&#xff09;二叉平衡树&#xff08;AVL&…

uniapp——nextTick(vue3)数据更新完之后加载

说明 将回调推迟到下一个 DOM 更新周期之后执行。在更改了一些数据以等待 DOM 更新后立即使用它。 代码 <view class"tabBox"><scroll-view scroll-x"true" :scroll-with-animation"true"><view class"box"><…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

leetCode刷题 5.最长回文子串

目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#x…

3.7 day2 Free RTOS

使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。2.总结DMA空闲中断接收数据的使用方法 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */adc_value HAL_ADC_GetValue(&hadc);TIM3->CCR3 adc_value * 999 / 4095;printf("%d …

Docker网络+原理+link+自定义网络

目录 一、理解Docker网络 1.1 运行tomcat容器 1.2 查看容器内部网络地址 1.3 测试连通性 二、原理 2.1 查看网卡信息 2.2 再启动一个容器测试网卡 2.3 测试tomcat01 和tomcat02是否可以ping通 2.4 只要删除容器,对应网桥一对就没了 2.5 结论 三、--link 3.…

探索考古文字场景,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建文本考古场景下的甲骨文字符图像检测识别系统

甲骨文是一种非常历史悠久的古老文字&#xff0c;在前面我们基本上很少有涉及这块的内容&#xff0c;最近正好在做文字相关的项目开发研究&#xff0c;就想着基于甲骨文的场景来开发对应的检测识别系统&#xff0c;首先看下实例效果&#xff1a; YOLOv7是 YOLO 系列最新推出的Y…

dubbo3适配springboot2.7.3

版本详细 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.3</version> </dependency><parent><groupId>org.springframework.boot</groupId><artifactId&…

css 用flex做成田字型

哈喽&#xff0c;各位小伙伴&#xff01;今天给大家来css控制div完成田字型样式&#xff0c;来&#xff0c;看看下面的效果图&#xff1a; 一看就知道你们想要代码了&#xff0c;不急。代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&…

c++ 11 新特性 不同数据类型之间转换函数之reinterpret_cast

一.不同数据类型之间转换函数reinterpret_cast介绍 reinterpret_cast是C中的一种类型转换操作符&#xff0c;用于执行低级别的位模式转换。具体来说&#xff0c;reinterpret_cast可以实现以下功能&#xff1a; 指针和整数之间的转换&#xff1a;这种转换通常用于在指针中存储额…

【考研数学】武忠祥各阶段用书搭配+学习包

25考研数学全流程规划&#xff01;别等到二战了才知道这样学 本人属于基础很差相当于是零基础的考研党&#xff0c;经过一年备考成功上岸 中间花费了很多时间在考研数学备考信息检索上&#xff0c;写下这篇希望能帮助基础不好的学弟学妹们多节约一些时间复习&#xff01; 25…

容器+虚拟机双引擎,ZStack Edge云原生超融合打通业务最后一公里

企业数字化转型的焦点正在发生变化&#xff0c;云基础设施由资源到应用&#xff0c;数据中心从核心到边缘。面向云原生趋势&#xff0c;围绕应用升级&#xff0c;新一代超融合产品——云原生超融合应运而生。 云原生与边缘计算趋势催生云原生超融合 当前&#xff0c;企业客户…