从0到1 —— 自动化测试成功起步

软件测试12-从0到1:你的第一个GUI自动化测试 首先,我基于 Selenium 2.0,带你从 0 到 1 建立了一个最简单直接的 GUI 自动化测试用例。这个用例的实现很简单,但是只有真正理解了 Selenium 工具的原理,你才能真正用好它。所以,我又分享了 Selenium 1.0 和 Selenium 2.0 的内部实现机制和原理:Selenium 1.0 的核心是,基于 JavaScript 代码注入;而 Selenium 2.0 的核心是,运用了浏览器原生支持的 WebDriver。 阅读详情

在这里插入图片描述

前言

本文分享一个小规模测试团队从0到1探索自动化测试实践的过程,主要从项目背景、测试方法、框架选择、实现路径、遇到的问题及解决方法、价值、经验等方面进行介绍,希望对有自动化测试需求的团队有所帮助。

先说成果

2020年我们前后用了六个月左右时间,泰康云CSDG测试团队三位伙伴在日常测试工作之余,从零开始掌握了python+selenium技能,完成了17个菜单下136个测试用例的编写,经过不断优化脚本和测试数据,脚本通过率可以达到80%以上,使原本需要花费两人天时间的回归验证工作压缩到3个小时内完成(自动化测试加未通过的用例手动验证)。
图片

实现自动化测试之前,因为回归测试太耗费时间和人力,上线之前基本没有做过完整的回归测试,只对主要功能进行简单检查。实现自动化测试之后,每次上线之前都可以对原有功能进行回归,上线更安心。

团队不大,挑战不小

我们是个小测试团队,六位测试伙伴负责四个产品的测试任务,深度参与产品研发全过程:参与产品需求讨论,测试用例设计,测试计划制定,测试执行,上线验证工作。每个产品开发团队十人左右,测试人员一到两人,开发采用敏捷管理模式,开发系统为WEB系统,两到三周一个迭代。

目前各个产品都在新功能开发阶段,开发节奏紧张,人力投入有限,导致开发完成时间离功能上线的deadline越来越逼近,严重压缩了测试时间。宝贵的测试时间只能用来完成新功能验证,原有功能的回归测试越来越力不从心。因各系统具有很大的差异性,并且各个项目上线节奏不同步,测试人员无法在项目间共享,无法增加人力,只能寄希望于自动化测试来解决回归测试的需求。

在本次自动化测试实践之前,我们是个纯手工测试团队,几乎没有自动化测试经验。本次自动化测试实践是一次从零开始的探索实践过程。我们针对其中一个投入人力最多、回归测试压力最大的项目进行,参与的测试人员四人,其中三人主要完成测试框架和测试用例脚本开发任务,一人参与了流水线配置和测试环境配置工作,均在不影响日常测试工作的情况下进行。

测试方法选择

目前功能测试角度的自动化测试往往采用接口自动化测试和UI自动化测试两种方式,UI界面一般变动比较频繁,每次界面变动都可能引起测试脚本修改,因此维护测试脚本的工作量比较大,所以目前业内比较推崇接口自动化测试,但是实际选取哪种自动化测试方式还得取决于业务实际情况。

我们首先也尝试了接口自动化测试,尝试过使用JAVA+TestNG编写测试脚本,尝试过Jemter生成接口测试用例。但是实践证明,对于有大量界面功能的系统,接口测试无法对系统进行有效的回归,有超过50%的问题是前端问题,或前端对接口的不恰当调用引起的问题,所以完全采用接口自动化测试无法满足我们系统日常回归测试的需求,我们采用了UI自动化测试。

实现路径

自动化测试一般采用如下工具来实现:

  • 采购商业化测试平台,功能完善,界面友好,成本较高;
  • 自研测试平台,满足公司或项目个性化需求;
  • 采用开源工具,接口测试使用的较多;
  • 基于开源框架编写测试脚本/代码,灵活性强,工作量较大,对测试能力有一定要求;
  • 使用工具录屏,生成测试脚本,操作简单,缺乏灵活性,维护成本很大。

对于测试投入有限的小团队,采购商业测试软件和自研测试平台都不现实;录屏工具看似容易,但稳定性非常差,难以持续维护。因此我们采用基于开源框架编写测试脚本的方式来实现。考虑到我们是一个年轻的纯手动测试团队,团队成员测试经验有限,缺少编程语言基础,在这种情况下,我们选择python+selenium这种应用广泛的脚本语言和主流测试组件,降低学习成本,激发学习热情。

我们首先划分了测试工具的功能模块,设计每个模块的具体功能。采用HTMLTestRunner管理测试用例执行和测试报告生成。

HTMLTestRunner实际上是采用的python unittest进行用例执行管理的,方便灵活,如果对测试报告有特殊要求,可以对HTMLTestRunner的测试报告部分进行修改和编辑。使用python unittest的断言来判断测试用例执行结果。我们基于python logging模块进行了log功能封装,根据每个测试用例生成测试报告,对测试服务启动、运行过程等公共代码执行也能生成log文件进行记录,便于问题定位。测试环境地址、浏览器类型等通过配置文件定义,增强灵活性。测试数据通过excel文件进行管理,可以灵活修改,也为后续数据驱动测试提供可能。编写了邮件通知功能,测试结束后,对测试报告和测试log进行打包发送,可以根据配置选择发送或者不发送,可以配置邮件接收人。测试框架的主要模块以及模块间关系如下图所示。

在这里插入图片描述

测试脚本完成后就可以随时随地执行,但是最重要的是能在新版本上线前执行。我们之前只有一套测试环境,测试脚本编写好后,发现执行自动化测试的时间和手动测试的时间有冲突,自动化测试和手动测试同时在一套测试环境上执行会产生干扰,影响测试效果。于是我们搭建了一套自动化测试环境,专门用于进行自动化测试。在一个完整迭代周期里,我们执行的各种测试工作如下图所示。

那么,对于一个零自动化测试基础的团队,如何进行上文介绍的框架的搭建和脚本的编写呢?我们通过自学和内部培训的方式来获得技能。先熟悉python语言,然后由有代码经验的测试工程师进行测试框架的设计、模块划分,主要代码的编写。Python语言学习掌握较好的伙伴可参与编写公共部分代码。然后由有经验的工程师选取几个稳定的页面(很少修改的页面)编写测试脚本demo。使用编写好的框架和测试脚本进行内部培训,测试人员按照测试脚本demo的结构和流程编写脚本并调试。之后团队一起对新编写的脚本进行review。经过几轮编写脚本和review之后,团队成员基本掌握了在本框架下编写测试用例的能力。

测试代码管理

在本项目实践中,没有专门的自动化测试岗位,参与测试的测试工程师都需要编写自己负责的模块的测试脚本。随着学习和实践经验的积累,测试脚本中的公共代码部分也在优化,那么这就需要对测试脚本进行代码管理。我们把测试项目放在gitlab上管理,并且制定了分支管理策略。

我们将devops分支作为执行测试的分支,个人修改代码后提交到远程个人分支,再merge到devops分支。当脚本稳定后,将devops分支merge到master分支,可以考虑打标签进行备份。

测试流水线

我们申请了专门的虚拟机来运行测试脚本,在TDS平台(基于jenkins的Taikang Deveops Service平台)建立测试项目流水线,通过TDS平台一键发起测试,测试结束后系统自动发送邮件将测试报告发送给相关测试和开发人员。

测试脚本项目和一般的开发项目有所不同,TDS中现有流水线模板不满足我们的需求,所以本流水线采用自定义jenkins的方式构建测试执行流水线。

Python是一种脚本语言,不需要编译直接可以运行。为了便于查看代码,便于出现问题后调试,我们通过自定义jenkinsfile,从gitlab直接下载代码上传到测试服务器,然后执行测试脚本的入口程序。测试脚本的执行时长因实际情况而不同,如果执行时间较短,可以让流水线执行起脚本后等待测试结束脚本退出,根据脚本的退出状态判断脚本执行情况,在流水线上显示脚本执行结果。如果测试脚本执行的时间较长,也可以让流水线执行起测试脚本后就结束本次流水线操作。

问题及解决

在开发测试脚本过程中,首先遇到的问题是,前端代码编写时很多元素没有定义id或者name,只能通过xpath进行定位。这样的话前端只要一点轻微的调整,xpath就可能发生改变,导致脚本稳定性很差,给脚本维护带来难度。我们通过和前端开发人员沟通约定,给大部分前端元素都设置id或者name,这样测试脚本里就可以通过id或name来定位元素,脚本的稳定性有了很大提升。对于必须用xpath定位的元素,通过学习xpath语法,优化xpath写法,从而在一定程度上提高了脚本可读性和稳定性。另外,对测试脚本进行适当改造,基于PageObject(页面对象)编写脚本,使测试脚本更易于维护。通过上述手段,测试脚本不断优化,脚本稳定性有了很大提高。

展望

虽然我们的UI自动化测试框架已经在团队内落地使用,解决了实际问题,但是不得不承认它使用起来不够简单,对使用者有一定的门槛。接下来我们会对该测试框架进行以下优化:

  • 对测试配置部分进行优化,增强通用性。
  • 将元素和操作进一步封装,从而让测试用例编写更简单。
  • 将测试框架从单机模式改造成web服务,增加可视性,方便协作。
  • 分级测试用例,制定不同级别的用例集,和被测系统的流水线结合,部署后执行测试。

UI自动化测试是针对界面功能进行操作和结果检查,不太适合对业务链条比较长的操作进行测试。下一步我们将业务链条比较长的测试点和复杂流程,用接口自动化测试覆盖这些场景,最终通过手动测试+主要菜单的UI自动化测试+复杂业务场景的接口自动化测试来实现功能测试的立体覆盖。

经验分享

本次自动化测试实践,我们有几个小经验想和大家分享:

1.对于小团队,初次进行自动化测试,建议充分利用优秀的开源项目,不追求重复造轮子,而是将好用的轮子组装成好用的战车,在最短的时间里追求尽量大的投入产出比,解决实际问题。

2.要选择合适的测试方式,否则可能投入很大的工作量但是解决不了实际问题。

3.从零开始实践,需要有一定经验的人进行测试设计,或者有人先行学习获得一定的自动化能力,指引方向,然后组织其他成员一起实践,效果往往更好。

4.要注意测试用例的有效性,明确用例的设计原则,注意断言的合理性,有效的用例才可能测试出问题。

本工作受到组内测试伙伴的极大支持,小伙伴们表现出了极大的学习热情和能力。做有价值的事情,一起学习成长,往往会有事半功倍的效果。也要感谢开发小伙伴们的支持和配合,代码更规范,测试才能更容易。

以上是泰康云测试团队自动化测试实践的一点经验,希望对人力投入有限,但是迭代频繁、前端界面功能复杂、项目有回归测试需求的团队有所参考。
感谢!

在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

Selenium IDE 1.1.0:自动化测试工具详解 Selenium IDE是用于Web应用程序的自动化测试的集成开发环境(IDE),它提供了录制和回放测试脚本的便捷方式。通过点击网页元素或执行浏览器操作,Selenium IDE可以自动生成脚本,并在之后以相同或不同的浏览器环境进行回放,以检查Web应用的功能正确性。Selenium IDE的命令库是整个自动化测试框架的核心组成部分,它包含了各种可以被用来控制浏览器行为的命令。理解并熟练应用命令库是进行有效测试的关键。 阅读详情

相关推荐

Selenium 3.1.0自动化测试框架详解

Selenium WebDriver是自动化测试工具的核心组件,它允许你创建复杂的、浏览器自动化测试用例。不同于旧版的Selenium RC,WebDriver直接与浏览器通信,无需中间代理,从而提供更快速、更直接的测试执行方式。它支持多种编程语言,包括Java、Python、C#等,使测试人员能够利用各自熟悉的语言编写测试脚本。随着项目的增长和自动化测试的需要,管理多个浏览器驱动变得越来越复杂。使用驱动管理工具可以自动化驱动的下载和更新过程。

weixin_31597759的博客 1111

从0到1开发自动化测试框架(建议收藏)

该框架基于Selenium WebDriver开源技术开发。本框架使用Maven工具进行Project管理,采用TestNG工具组织测试,应用CSV文件存储测试数据,实现测试数据与测试用例的分离,方便测试数据管理,降低自动化脚本的维护成本,实现数据驱动。此外,该框架还封装了丰富的Selenium方法关键字,借鉴了QTP语法结构,实现了直观清晰的结构化代码语法,如:Page.Item.Operate,降低自动化代码的冗余与重复。

okcross0的博客 1127

RJ45以太网接口EMC设计方案

RJ45以太网接口EMC设计方案 一、 接口概述 RJ45以太网接口是目前应用最广泛的通讯设备接口,以太网口的电磁兼容性能关系到通讯设备的稳定运行。赛盛技术应用电磁兼容设计平台(EDP)软件从接口原理图、结构设计,线缆设计三个方面来设计以太网口的EMC设计方案。 二、 接口电路 原理图的EMC设计 百兆以太网接口2KV防雷滤波设计 图1 百兆以太网接口2KV防雷滤波设计 接口电路设计概述: 本方案从EMC原理上,进行了相关的抑制干扰和抗敏感度的设计;从设计层次解决EMC问题;同时此电路兼容了百兆以太网接

兰陵笑笑生SD的博客 1万+

如何设计一个自动化测试平台

技术本身的实践、迭代和演进是一个过程,从软件工程的角度来说,测试平台就是“只做刚刚好的设计”、“先做MVP方案然后不断迭代小步快跑”这些很好的软件工程实践理念某个阶段的产物。大白话来说,就是人太多了,理解能力和技术差异太大,没那么多时间和资源浪费在不断造轮子和来回对比扯皮上,直接平台化,标准化,通过权限管理来标注操作的边界,保证大家。一般在企业内,技术团队如果规模比较小,很少会专门投入资源去做平台化的事情,特别是测试团队,无论是成本预算还是技术能力,先天技术能力不足,后天可投入的资源缺乏。

MXB1220的博客 353

电源芯片TPS54560典型应用电路及设计详解

TPS54560 是一款配有集成型高侧 MOSFET 的 60V、5A DC-DC转换器,输入电压范围7-60V,输出电压可通过外部反馈电阻设置成略低于输入电压的任意值。**所以,**R5=31.25KΩ、R6:10KΩ(常用值)时,即可设置输出电压为 3.3V。**所以,**R5=140KΩ、R6:10KΩ(常用值)时,即可设置输出电压为12V。设计 TPS54560 的输出电压时,主要通过外部反馈电阻网络来设置输出电压。因此,输出 3.3V ,输入电压24V时推荐的电感值为 8µH 至 10µH。

weixin_42306872的博客 1万+

从 0 搭建一个智能问答工单系统:低代码 + 大模型的实战融合方案

企业智能问答工单系统解决方案:通过橙武低代码平台集成DeepSeek大模型,实现自动化工单处理与智能问答。系统能自动匹配知识库、分类工单,支持多渠道接入,显著提升响应效率(答复时间从12小时降至5分钟)。采用MySQL8表结构设计,结合向量数据库实现语义搜索,客服人力需求减少70%。系统支持知识库持续优化,AI答复满意度达88%,助力企业低成本构建智能客服中台。

欢迎来到我的优快云博客!我专注于技术创新和数字化转型,特别是在低代码平台、人工智能和大数据分析领域的探索与应用。通过深入分析各种行业案例,帮助企业加速数字化进程,提升运营效率与创新能力。在这里,您将找到关于低代码平台、AI技术、数据分析与 1549

如何从0到1搭建属于自己的接口自动化测试平台

针对如上问题,我就在想有没有一种方式可以让自动化测试工作做的更简单一些,在公司内部更容易推广一些,上手更容易一些,于是乎,我就开始构思自动化测试框架的升级版本------>自动化测试平台。作为一个测试工程师,想着去学习各种测试技术,来提高工作的效率. 前段时间我也学了一套自动化测试框架搭建的思想和方法,已经搭建了一套基于yml文件用例的自动化框架.相对于无图形化界面的自动化框,会见用例先放到 test_cases文件夹下面,然后在这个文件夹下面去新增不同的文件夹,对应不同的模块,如下图所示。

wangchen900705的博客 502

深入浅出:CosineLRScheduler 调度器的原理与实战应用

本文深入解析了CosineLRScheduler调度器的核心原理与实战应用,详细介绍了余弦退火算法及其在深度学习模型训练中的优势。通过参数配置建议、PyTorch实现示例和常见问题解决方案,帮助开发者高效应用该调度器提升模型性能,特别适用于计算机视觉和自然语言处理任务。

sss66的博客 859

全网最牛最全面的自动化平台从0到1地一步步搭建

这两个框架在自定义报告有很多可研究的地方,后边会搞个系列讲讲,这里仅做个抛砖引玉,既然各测试组都用相同的东西做相同的事情,并且有的组技术能力也有一定的壁垒,因此就有了为了解决这个痛点而出现的JAVA上报工具包和Pytest上报插件,通过简单的引用配置就能最小成本快速的上报。来到新的公司有半年多了,由于业务和人员的极速扩张,整个局面处于百废待兴阶段,有太多方方面面的事情要做,前五个月基本上都是在给各式各样的需求进行支援,最近的两个月多月才比较固定做技术域的事情。总结:现阶段如何突出重围呢?

m0_60054525的博客 1033

华为IPD实战:从概念到发布的完整流程拆解(附各阶段关键文档模板)

本文深入拆解华为IPD(集成产品开发)从概念到发布的完整实战流程,涵盖概念、计划、开发验证及发布生命周期四大阶段。详细解析了各阶段的核心活动、关键产出与决策评审点,并提供了如《初始业务计划书》等关键文档模板框架,旨在帮助企业将IPD理论转化为可执行的操作指南,提升研发效率与产品成功率。

weixin_29212429的博客 528

UCOS-III 系统移植

UCOSIII系统移植到GD32F303详细过程 工程代码:https://github.com/jslaobing/techIot_ucosiii_porting

TechIoT - 探索物联网与嵌入式系统 2087

从零到一,搭建自动化测试平台

从零到一,搭建自动化测试平台 调研开发框架——springcloud,springboot,springmvc,mavenweb,Javaweb 设计数据库——mysql,mybatis 数据库连接, mapper, SQL 设计接口——restful接口 接口结构, 返回数据结构, 自定义状态码 工具类——utils Redis缓存 email发送 异步请求——@Async 拦截器——handler tokenhandler 异常捕获——excep

qq_15855917的博客 1647

SAP-ABAP: BP主数据完全指南:从基础到高阶应用

SAP-ABAP: BP主数据完全指南:从基础到高阶应用

baidu_35680696的博客 1647

【自动化测试】如何从0到1打造自动化测试

一个公司的测试部门由初创到成熟,最具代表性的可能就是其自动化团队的实力,因为当公司的规模越来越大,业务越来越庞杂,测试的工作量也会成倍的增长。整个团队的瓶颈开始由研发人员的不足转向测试人力的不足,单靠人工测试已经无法满足产品的快速更新迭代速度,往往痛定思痛后测试部门都会艰难的走上自动化测试的道路上,那么当我们从无到有打造自己的自动化测试团队时,应该从哪些方面入手,以及按照怎样的流程来避免走太多的弯路呢,这里小编以自己自动化测试的经验来给出一些参考建议。

799

网络速度的极致:800G & 1.6T 以太网的突破!

你好,这里是网络技术联盟站。在我们进入数据驱动的世界时,以太网的重要性日益突出。从根本上说,以太网是一种连接计算机的技术,旨在形成一个本地网,通过它,设备可以与其他设备进行通信。然而,随着时间的推移,以太网已经发展成为一种全球的数据通信系统,其速度从初始的10Mbit/s发展到现在的800G,甚至1.6T。这种巨大的进步并不是没有挑战的,但每一次的突破都代表了技术的巨大飞跃。本文将探讨800G和1.6T以太网的创新与挑战。

网络技术联盟站 1770

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

自动化测试从0到1

自动化测试(Automated Testing),是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。比如说,在项目迭代过程中,持续的回归测试是一项非常枯燥且重复的任务,并且测试人员在每天重复劳动的工作之下,也丝毫得不到成长。此时开展自动化测试就能够帮助测试人员从重复、枯燥的手工测试中解放出来,提高测试效率,缩短回归测试时间。一般来说,自动化测试通常都会跟持续集成系统(比如Jenkins)配合使用。

huace3740的博客 833

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

用Postman从0到1实现UI自动化测试

不是做的吗?为什么还能做UI自动化测试呢?其实,只要你了解Selenium的运行原理,就可以理解为什么也能实现了。

chengxuyuznguoke的博客 765

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

从0到1带你自动化测试实战(万字详解)

之前学完了自动化测试工具Selenium和单元测试工具JUnit,一直没有进行实战,接下来以知识百宝库系统为例结合两者测试工具,基于web项目进行完整的自动化测试实战

N_0050的博客 2436

从0到1 ,超详细!利用Apifox完成接口自动化测试并实现持续集成

接口自动化测试是通过编写脚本,使用自动化测试工具来模拟用户与应用程序接口进行交互的过程,对接口的输入和输出进行验证,检查接口是否按照预期的方式工作,接口测试相对稳定,容易实现自动化持续集成,可以减少人工回归测试的时间成本,缩短测试周期。

weiweizuishuai的博客 9666

从0到1开发自动化测试框架

一、序言        随着项目版本的快速迭代、APP测试有以下几个特点: 1. 首先,功能点多且细,测试工作量大,容易遗漏; 2. 其次,代码模块常改动,回归测试很频繁,测试重复低效; 3. 最后,数据环境多样,用户场景复杂,功能回归覆盖难全面。        为节省成本,保证高效及高质量迭代,我们需采用更高效的测试方式,App自动化测试是较高效的手段。

lihuixin_的博客 2666

从0到1完美搭建web自动化测试环境

以下是操作截图以及步骤说明,在idea的New Project窗口中,在Name文本框中输入该maven项目的名称,在GroupId文本框中输入公司的域名,如果有版本号要求,在Version文本框设置项目版本号,否则保持默认版本号,单击【Next】在如下Settings窗口中,搜索框中输入maven,按【Enter】,自动定位maven选择页中,在如下青色框中维护maven的配置信息,包括maven的本地路径,maven本地路径中的配置文件setting.xml路径,以及本地仓库路径。

kk_lzvvkpj的博客 882

如何从0开始搭建公司自动化测试框架?一文4个步骤教你成功搭建

搭建的自动化测试框架要包括API测试,UI测试,APP测试三类。以上三类其实可以简化为两类,那就是:

测试官 1637

从0到1介绍自动化测试分层

自动化测试分层主要基于测试的不同关注点,从底层到上层依次进行。这种分层策略有助于确保测试的全面性和有效性,同时减少重复工作,提高测试效率。

hlsxjh的博客 1036
上一篇: 除了功能性能测试 应用软件质量要求还有哪些?
下一篇: 提升接口测试覆盖率,都要考虑哪些点?
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值