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

python测试框架之pytest

Pytest

  • pytest 基础使用
    • pytest安装
    • pytest的测试case收集规则
    • pytest - fixture的使用
    • skip and xfail
    • pytest - 属性标记测试函数
    • pytest - 参数化测试
    • pytest - mock/monkeypatch的使用
    • pytest - 运行方式
      • pytest - 运行方式/命令
      • pytest - 处理测试失败的case
    • pytest - 测试输出
      • 捕获 stdout/stderr输出
      • 捕获警告信息
      • pytest - 测试报告
      • pytest - 自带的测试报告
      • pytest + allure测试报告
  • pytest - 进阶使用
    • 安装和使用插件
    • 编写插件
    • 编写hook函数
    • pytest与现有测试框架 结合
    • pytest调用基于unittest的测试case
    • 实现xunit样式的设置
    • 设置bash

pytest 基础使用

pytest官方文档/手册

pytest安装

pip install -U pytest

pytest的测试case收集规则

Conventions for Python test discovery

  • 如果未指定有关path的命令行参数,则从当前目录开始查找test case。
  • 如果命令指定了查找目录,则会递归的查找这些目录下的文件,除非目录名与norecursedirs中的目录名匹配
    在这些目录中,搜索以测试包名开头的文件,例如test_*.py*_test.pytest_是测试包名的前缀,*_test.py是测试文件的后缀名;
    在类之外,带有test_前缀的测试函数或方法;
    在带有前缀(test/Test)的测试类中带有前缀test_的测试函数或方法;带有@staticmethod@classmethod装饰器的方法也会被收集

自定义测试case收集规则
继承unittest.TestCase 来实现

待补充。。。

pytest - fixture的使用

“requesting” fixtures

import pytestclass Fruit:def __init__(self, name):self.name = nameself.cubed = Falsedef cube(self):self.cubed = Trueclass FruitSalad:def __init__(self, *fruit_bowl):self.fruit = fruit_bowlself._cube_fruit()def _cube_fruit(self):for fruit in self.fruit:fruit.cube()@pytest.fixture
def fruit_bowl():return [Fruit("apple"), Fruit("banana")]
'''
当pytest执行测试函数(test_fruit_salad)时,会检查测试函数签名中的参数(fruit_bowl),并查找与参数同名的fixture对象(fruit_bowl()),pytest一旦找到它们,就会执行fixture对象,并捕获返回结果,然后将结果作为参数传入测试函数
'''
def test_fruit_salad(fruit_bowl):# Actfruit_salad = FruitSalad(*fruit_bowl)# Assertassert all(fruit.cubed for fruit in fruit_salad.fruit)    # def all(__iterable: Iterable[object]) -> bool ,Return True if bool(x) is True for all values x in the iterable.

Fixtures can request other fixtures

import pytest@pytest.fixture
def first_entry():return "a"@pytest.fixture
def order(first_entry):return [first_entry]   #  first_entry 的为 adef test_string(order):		# order的值为 ["a"]order.append("b")assert order == ["a", "b"]'''
pytest执行test_sting时,会查找与参数order同名的fixture对象:order(first_entry),然后执行函数order(first_entry),在执行order时,再查找与参数first_entry同名的fixture对象:first_entry(),然后捕获结果:'a',作为参数传递给order函数,再捕获order的函数返回值:['a'],作为参数传递给test_string
'''

fixture是可以重复使用的
** 一个test/fixture同时可以request多余一个fixture **

import pytest@pytest.fixture
def first_entry():return "a"@pytest.fixture
def second_entry():return 2@pytest.fixture
def order(first_entry, second_entry):return [first_entry, second_entry]@pytest.fixture
def expected_list():return ["a", 2, 3.0]def test_string(order, expected_list):order.append(3.0)assert order == expected_list

** 在一次测试中可以多次请求固定数据(返回值会被缓存)**

import pytest@pytest.fixture
def first_entry():return "a"@pytest.fixture
def order():return []@pytest.fixture
def append_first(order, first_entry):return order.append(first_entry)def test_string_only(append_first, order, first_entry):# print(append_first)     # None# print(order)            # ['a']# print(first_entry)      # 'a'assert order == [first_entry]

** 自动执行fixture **

import pytest@pytest.fixture
def first_entry():return "a"@pytest.fixture
def order(first_entry):return []@pytest.fixture(autouse=True)
def append_first(order, first_entry):return order.append(first_entry)def test_string_only(order, first_entry):assert order == [first_entry]def test_string_and_int(order, first_entry):order.append(2)assert order == [first_entry, 2]

** scope:可以在类、模块、包、会话之间共享fixtures资源 **

# aa.py
import smtplib
import pytest@pytest.fixture(scope="module")
def smtp_connection():return smtplib.SMTP("smtp.gmail.com", 587, timeout=5)
# ======================================================
# test_aa.py
def test_ehlo(smtp_connection):response, msg = smtp_connection.ehlo()assert response == 250assert b"smtp.gmail.com" in msgassert 0  # for demo purposesdef test_noop(smtp_connection):response, msg = smtp_connection.noop()assert response == 250assert 0  # for demo purposes

** fixture 的作用范围**
Fixtures are created when first requested by a test, and are destroyed based on their :scope

  • function: the default scope, the fixture is destroyed at the end of the test.
  • class: the fixture is destroyed during teardown of the last test in the class.
  • module: the fixture is destroyed during teardown of the last test in the module.
  • package: the fixture is destroyed during teardown of the last test in the package where the fixture is defined, including sub-packages and sub-directories within it.
  • session: the fixture is destroyed at the end of the test session.

skip and xfail

待补充。。。

pytest - 属性标记测试函数

待补充。。。

pytest - 参数化测试

待补充。。。

pytest - mock/monkeypatch的使用

待补充。。。

pytest - 运行方式

pytest - 运行方式/命令

忽略某些测试的方式:在命令行里用 --ignore=path 参数

usage: pytest [options] [file_or_dir] [file_or_dir] [...]

待补充。。。

pytest - 处理测试失败的case

待补充。。。

pytest - 测试输出

待补充。。。

捕获 stdout/stderr输出

待补充。。。

捕获警告信息

待补充。。。

pytest - 测试报告

待补充。。。

pytest - 自带的测试报告

待补充。。。

pytest + allure测试报告

待补充。。。

pytest - 进阶使用

安装和使用插件

待补充。。。

编写插件

待补充。。。

编写hook函数

待补充。。。

pytest与现有测试框架 结合

待补充。。。

pytest调用基于unittest的测试case

待补充。。。

实现xunit样式的设置

待补充。。。

设置bash

待补充。。。

相关文章:

python测试框架之pytest

Pytest pytest 基础使用pytest安装pytest的测试case收集规则pytest - fixture的使用skip and xfailpytest - 属性标记测试函数pytest - 参数化测试pytest - mock/monkeypatch的使用pytest - 运行方式pytest - 运行方式/命令pytest - 处理测试失败的case pytest - 测试输出捕获 …...

uni-app 开发企业级小程序课程

课程大小:7.7G 课程下载:https://download.csdn.net/download/m0_66047725/90616393 更多资源下载:关注我 备注:缺少两个视频5-14 tabs组件进行基本的数据展示和搜索历史 处理searchData的删除操作 1-1导学.mp4 2-10小程序内…...

深度图可视化

import cv2# 1.读取一张深度图 depth_img cv2.imread("Dataset_depth/images/train/1112_0-rgb.png", cv2.IMREAD_UNCHANGED) print(depth_img.shape) cv2.imshow("depth", depth_img) # (960, 1280) print(depth_img)# 读取一张rgb的图片做对比 input_p…...

Java实现希尔排序算法

1. 希尔排序原理图解 希尔排序是插入排序的一种高效改进版本,通过比较和交换间隔较远的元素来减少数据的移动次数。以下是希尔排序的步骤: 1. 选择初始间隔:通常选择数组长度的一半作为初始间隔。 2. 分组和插入排序:将数组分成若…...

Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目

持续深耕 RocketMQ 领域,更多实战避坑指南、源码解析、最佳实践,已整理至「RocketMQ 中文社区」 🔍 近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技…...

2025年智慧交通与能源技术国际会议(ITNET 2025)

The 2nd International Conference on Intelligent Transportation and Energy Technology 一、大会信息 会议简称:ITNET 2025 大会时间:(以官网为准) 大会地点:中国南京 收录检索:提交Ei Compendex,CPCI,CNKI,Google…...

Spring Boot 集成 Redis 实战总结

Spring Boot 集成 Redis 实战总结 一、基础集成与配置 依赖引入 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>默认使用 Lettuce 作为连接池&#xf…...

ubuntu18.04启动不了修复

参考: 虚拟机里的Ubuntu18.4启动时进入到grub rescue救援模式&#xff08;无法正常进入到系统&#xff09;&#xff0c;ls查看后只有一个硬盘和分区&#xff0c;且无法找到/boot/grub文件【已解决】_ubuntu grub rescue-CSDN博客 本人fdisk错误使用,导致了grub启动不了 第一步…...

人类行为的原动力是自我保存-来自ChatGPT

自我保存&#xff08;Self-Preservation&#xff09;确实可以说是人类行为最原始、最底层的驱动力。 简单来说&#xff1a; 无论我们做什么&#xff0c;表面看动机五花八门&#xff0c;实际上归根到底都绕不开活下去、保护自己。 &#x1f4a1; 从不同层面理解这个观点&#…...

退役淘汰的硬盘数据安全处置不可忽视-硬盘数据抹除清零

在信息化时代&#xff0c;硬盘作为数据存储的核心载体&#xff0c;其退役处理直接关系到信息安全&#xff0c;淘汰硬盘中往往留存大量敏感信息&#xff0c;若处置不当&#xff0c;极易引发数据泄露风险&#xff0c;造成难以挽回的损失。因此&#xff0c;建立规范的硬盘数据销毁…...

创建 Node.js Playwright 项目:从零开始搭建自动化测试环境

一、环境准备 在开始创建 Playwright 项目之前&#xff0c;确保你的电脑上已经安装了以下工具&#xff1a; Node.js&#xff1a;Playwright 依赖于 Node.js 环境&#xff0c;确保你已经安装了最新版本的 Node.js。可以通过以下命令检查是否安装成功&#xff1a; node -v npm -…...

1+X: Python程序开发职业技能等级要求(初级)练习资料分享

以下将根据表1中Python程序开发职业技能等级要求&#xff08;初级&#xff09;的不同工作领域和任务&#xff0c;分别给出练习代码或操作步骤。 Python基础编程 开发环境搭建 操作步骤&#xff1a;以Windows系统为例&#xff0c;首先从Python官方网站&#xff08;https://www…...

【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE)

【漏洞复现】CVE-2024-38856&#xff08;ApacheOfbiz RCE&#xff09; 1. 漏洞描述 Apache OFBiz 是一个开源的企业资源规划&#xff08;ERP&#xff09;系统。它提供了一套企业应用程序&#xff0c;用于集成和自动化企业的许多业务流程。 这个漏洞是由于对 CVE-2023-51467 的…...

【React】获取元素距离页面顶部的距离

文章目录 代码实现 代码实现 import { useEffect, useRef, useState } from react;const DynamicPositionTracker () > {const [distance, setDistance] useState(0);const divRef useRef(null);useEffect(() > {const targetDiv divRef.current;if (!targetDiv) re…...

【Markdown】【HTML】在Markdown中实现康奈尔笔记模式(右侧留白)

文章目录 HTML表格——康奈尔笔记法标签解释<table> 相关标签文本内容标签注释标签 最低限度应了解的HTML标签 (Essential HTML Tags)结构标签 (Structure Tags)文本标签 (Text Tags)列表标签 (List Tags)链接和图片 (Links and Images)格式化 (Formatting)表格 (Tables)…...

Go语言中的Context

目录 Go语言中的Context 1. Context的基本概念 1.1 Context的核心作用 2. Context的基本用法 2.1 创建Context 背景Context 可取消的Context 带有超时的Context 2.2 在Goroutine间传递Context 2.3 获取Context的值 为Context添加自定义数据 访问Context中的值 3. C…...

基于Python的图片/签名转CAD小工具开发方案

基于Python的图片/签名转CAD工具开发方案 一、项目背景 传统设计流程中&#xff0c;设计师常常需要将手写签名或扫描图纸转换为CAD格式。本文介绍如何利用Python快速开发图像矢量化工具&#xff0c;实现&#xff1a; &#x1f4f7; 图像自动预处理✏️ 轮廓精确提取⚙️ 参数…...

uniapp微信小程序:WIFI设备配网之TCP/UDP开发AP配网

一、AP配网技术原理 1.1 配网模式选择 AP配网&#xff08;SoftAP模式&#xff09;是IoT设备配网成功率最高的方案之一 1、其核心原理&#xff1a; ​​设备端​​&#xff1a;启动AP模式&#xff08;如SSID格式YC3000_XXXX&#xff0c;默认IP192.168.4.1&#xff09;​​手…...

docker部署seata

seata版本&#xff1a;2.0.0 使用eureka作为注册中心&#xff0c;mysql作为存储 拉取镜像 docker pull seataio/seata-server:2.0.0mysql建表语句 可从 github下载sql脚本 -- seata_server.branch_table definition CREATE TABLE branch_table (branch_id bigint NOT NULL,…...

JVM 内存分布详解

/*** 示例类&#xff0c;展示各种成员在JVM中的存储位置*/ public class MemoryDistributionExample {// 1. 实例变量&#xff08;普通成员变量&#xff09; - 存储在堆内存的对象实例中private int instanceVar 10;private String instanceRef "Instance Reference&quo…...

AR行业应用案例与NXP架构的结合

1. 工业巡检AR头盔 场景示例&#xff1a;宁德核电基地使用AR智能头盔进行设备巡检&#xff0c;通过实时数据叠加和远程指导&#xff0c;将工作效率提升35%。头盔需处理传感器数据、图像渲染和低延迟通信1。 NXP架构支持&#xff1a; 协处理器角色&#xff1a;NXP i.MX RT系列M…...

OpenCV 图形API(49)颜色空间转换-----将 NV12 格式的图像数据转换为 BGR 颜色空间函数NV12toBGR()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从NV12&#xff08;YUV420p&#xff09;颜色空间转换为BGR。 该函数将输入图像从NV12颜色空间转换为RGB。Y、U和V通道值的常规范围是0到25…...

Transformer中Post-Norm和Pre-Norm如何选择?

pre-norm: x n 1 x n f ( n o r m ( x n ) ) x_{n1}x_nf(norm(x_n)) xn1​xn​f(norm(xn​)) 其中第二项的方差由于有 norm 是不随层数变化的&#xff0c;于是 x 的方差会在主干上随层数积累。到了深层以后&#xff0c;单层对主干的影响可以视为小量&#xff0c;而不同层的 …...

jvm-描述符与特征签名的区别

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;存储的是方法签名&#xff0c;而不是仅仅方法描述符。方法签名包含了方法的参数类型和返回值类型的信息&#xff0c;而方法描述符通常指的是仅包含参数类型的那部分信息。为了更清晰地理解这两者的区别以及它们如何在JVM…...

JVM有什么调优参数?

-Xms&#xff1a;堆最小值 -Xmx&#xff1a;堆最大值。-Xms与-Xmx 的单位默认字节都是以k、m做单位的。 通常这两个配置参数相等&#xff0c;避免每次空间不足&#xff0c;动态扩容带来的影响。 -Xmn&#xff1a;新生代大小 -Xss&#xff1a;每个线程池的栈大小。在jdk5以上…...

QT:Qt5 串口模块 (QSerialPort) 在 VS2015 中正确关闭串口避免被占用

以下是使用 Qt5 串口模块 (QSerialPort) 在 VS2015 中正确关闭串口避免被占用的完整示例代码&#xff1a; #include <QSerialPort> #include <QDebug>// 创建全局或类成员变量&#xff08;推荐使用智能指针&#xff09; QSerialPort *serialPort nullptr; // 打开…...

14.QT-多元素控件|QListWidget|QTableWidget|QTreeWidget(C++)

Qt中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView 以QTableWidget和QTableView为例. QTableView是基于MVC设计的控件.QTableView⾃⾝不持有数据.使⽤QTableView的时候需要⽤⼾创建⼀个Model对象(⽐如 QStandardModel ),并且把Model…...

单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用

文章目录 一.什么是单页面应用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重点)0.引出1.介绍2.下载与使用(5个基本步骤2个核心步骤)2.1 五个基本步骤2.2 两个核心步骤 一.什么是单页面应用? 定义和特点:所有功能都在一个HTML中实现 示例:网易云音乐 多页面应…...

Java并发编程-线程通讯

Java并发编程-线程通讯 线程通讯常见场景实现方法等待通知信号量实现栅栏实现锁机制实现 CountDownLatchCountDownLatch 常用方法说明模拟报表统计场景其他样例 CyclicBarrier 线程通讯 线程通讯指的是多个线程之间通过共享内存或消息传递等方式来协调和同步它们的执行。在多线…...

ubuntu学习day4

4 Linux 文件操作 4.1 基于文件指针的文件操作 Linux 中对目录和设备的操作都是文件操作&#xff0c;文件分为普通文件&#xff0c;目录文件&#xff0c;链接文件和设备文件。普通文件&#xff1a;也称磁盘文件&#xff0c;并且能够进行随机的数据存储(能够自由 seek 定位到某…...

百度暑期实习岗位超3000个,AI相关岗位占比87%,近屿智能携AIGC课程加速人才输出

今年3月&#xff0c;百度重磅发布3000暑期实习岗位&#xff0c;聚焦大模型、机器学习、自动驾驶等AI方向的岗位比例高达87%。此次实习岗位涉及技术研发、产品策划、专业服务、管理支持、政企解决方案等四大类别&#xff0c;覆盖超300个岗位细分方向。值得一提的是&#xff0c;百…...

vin码识别技术-车辆vin识别代码-Java接口集成

快速识别车辆vin码有助于提升汽车保险行业、4s店车辆出入库、二手车交易、车辆租赁公司等众多业务流程的管理。vin码识别接口&#xff0c;为汽车后市场实现车辆vin信息的快速提取提供了高效且可靠的解决方案。基于先进的ocr技术&#xff0c;能够迅速定位图片中的VIN码区域&…...

随机深林算法是分类还是回归?

随机森林算法既可以用于分类也可以用于回归。 一、随机森林用于分类的情况 原理 随机森林是一种集成学习算法&#xff0c;它通过构建多棵决策树来提高预测性能。在分类任务中&#xff0c;每棵决策树都是基于随机选择的特征子集和随机抽样的数据子集&#xff08;通常是通过自助…...

【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

北京大学|第8讲:《生成未必理解:基于扩散模型能否实现视觉世界模型》

导 读INTRODUCTION 随着人工智能技术的飞速发展&#xff0c;AI在图像和视频生成领域取得了显著成就&#xff0c;但生成和理解之间的统一仍然是一个挑战。北京大学深圳研究生院助理教授袁粒的团队正在探索如何实现这一目标&#xff0c;他们的研究可能会改变我们对AI生成和理解能…...

C++如何处理多线程环境下的异常?如何确保资源在异常情况下也能正确释放

多线程编程的基本概念与挑战 多线程编程的核心思想是将程序的执行划分为多个并行运行的线程&#xff0c;每个线程可以独立处理任务&#xff0c;从而充分利用多核处理器的性能优势。在C中&#xff0c;开发者可以通过std::thread创建线程&#xff0c;并使用同步原语如std::mutex、…...

Gmssl实战

最近项目要引入gm算法&#xff0c;实现aes和sm4数据加密&#xff0c;研究了一下两个系统的安装和测试用例 linux&#xff0c;从github下载GmSSL库&#xff08; https://github.com/guanzhi/GmSSL.git &#xff09;&#xff0c;以下为安装方法。 ## GmSSL库安装编译,需要确认…...

C语言 函数(上)

目录 1.函数的概念 2.库函数 3.自定义函数 4.形参和实参 5.return语句 1.函数的概念 数学中我们其实就见过函数的概念&#xff0c;比如&#xff1a;一次函数y kx b&#xff0c;k和b都是常数&#xff0c;给一个任意的x&#xff0c; 就得到一个y值。 其实在C语言也引入…...

2025.04.20【Lollipop】| Lollipop图绘制命令简介

Customize markers See the different options allowing to customize the marker on top of the stem. Customize stems See the different options allowing to customize the stems. 文章目录 Customize markersCustomize stems Lollipop图简介R语言中的Lollipop图使用ggp…...

多源异构网络安全数据(CAPEC、CPE、CVE、CVSS、CWE、ATTCK、D3FEND)的详细解析,包括其作用、数据内容及相互联系

1. 各数据源的作用与数据内容 数据源核心作用核心数据类型示例CWE&#xff08;Common Weakness Enumeration&#xff09;描述软件/硬件安全弱点的根本原因&#xff08;代码缺陷、逻辑错误&#xff09;弱点分类、描述、修复建议CWE-79&#xff08;跨站脚本漏洞&#xff09;CVE&…...

2025年渗透测试面试题总结-拷打题库10(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库10 1. CSRF成因及防御措施 | 非Token防御 2. XSS Worm原理 3. Co…...

(二十九)安卓开发中DataBinding 和 ViewBinding详解

在安卓开发中&#xff0c;DataBinding 和 ViewBinding 是两种非常有用的工具&#xff0c;它们都可以简化视图与代码之间的交互&#xff0c;但它们的目的和功能有所不同。本文将详细讲解它们的定义、区别&#xff0c;并结合代码示例和具体使用场景进行说明。 一、ViewBinding 简…...

【C#】.net core 6.0调用MVC API接口时,提示Unsupported Media Type,状态码415

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01;&#…...

Spark SQL核心解析:大数据时代的结构化处理利器

在大数据处理领域&#xff0c;Spark以其强大的分布式计算能力脱颖而出&#xff0c;而Spark SQL作为Spark生态系统的重要组成部分&#xff0c;为结构化和半结构化数据处理提供了高效便捷的解决方案。它不仅整合了传统SQL的强大查询功能&#xff0c;还深度集成到Spark的计算框架中…...

oracle expdp/impdp 用法详解

oracle expdp/impdp 用法详解 创建逻辑目录&#xff0c;该命令不会在操作系统创建真正的目录&#xff0c;最好以system等管理员创建。 create directory db_bak as d:\test\dump; 查看管理理员目录&#xff08;同时查看操作系统是否存在&#xff0c;因为Oracle并不关心该目录是…...

什么是AI智能音视频?小天互连即时通讯带您体验

信息爆炸的时代&#xff0c;音视频会议与我们的工作形影不离。如何更好的进行音视频互动呢&#xff1f;&#xff0c;小天互连即时通讯深度接入DeepSeek&#xff0c;以AI 技术与大模型的结合将为音视频处理带来更高视频享受&#xff0c;更便捷的操作&#xff0c;更安全的环境&am…...

Qt 概述

目录 1. Qt 背景介绍1.1 什么是 Qt1.2 Qt 的发展史1.3 Qt 支持的平台1.4 Qt 版本1.5 Qt 的优点1.6 Qt 的应用场景1.7 Qt 的成功案例1.8 Qt 的发展前景及就业分析 2. 搭建 Qt 开发环境2.1 Qt 的开发工具概述2.2 Qt SDK 的下载和安装2.2.1 Qt SDK 的下载2.2.2 Qt SDK 的安装 2.3 …...

uniapp-商城-31-shop页面中的 我的订单

前面的章节讲了很多关于页面 布局 的知识。 现在来看看其他栏目&#xff0c;我的订单页面。 1 页面样式图 基本的样式包含shop页面 我的订单 点击我的订单&#xff0c;跳转到订单页面 点击订单的每一条订单&#xff0c;跳转到订单详情 2、创建订单页面 2.1 创建sub页面文件…...

CCF-GESP认证的学习资源与知识点详细指南

CCF-GESP认证的学习资源与知识点详细指南 一、CCF-GESP认证简介 CCF编程能力等级认证&#xff08;GESP&#xff09;是由中国计算机学会&#xff08;CCF&#xff09;主办的青少年编程能力认证考试&#xff0c;旨在提升青少年的计算机和编程教育水平&#xff0c;推广编程教育。G…...

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 一、SystemWeaver与SOME/IP基础认知 1.1 SystemWe…...