• 博客(611)
  • 收藏
  • 关注

原创 软件测试中的测试左移与测试右移

测试左移和测试右移是软件开发领域中的两种重要测试策略,它们在不同的阶段和场景下都发挥着重要的作用。测试左移注重在软件开发的早期阶段进行测试,以尽早发现和解决问题,从而降低后期修复缺陷的成本。而测试右移则强调在软件上线后进行持续的监控和测试,以不断提高软件的质量和稳定性。在实践中,测试左移和测试右移并不是孤立存在的,而是相辅相成的。团队可以根据项目的需求和情况,灵活地选择和结合使用这两种测试策略,以达到最佳的测试效果。

2024-02-25 19:30:45 925

原创 ChatGPT对软件测试的影响

由于大模型的支持,它的产出是经过提炼和总结的,是相对系统的,更接近于我所需要的结果,显然它是比搜索引擎更加强大、更加智能的工具,能够节省我查找资料并从资料中提炼我所需信息的大量时间,而且它可以开拓我的思路,给出一些我可能暂时想不到或者没想到的点子,这一点非常有帮助。需要创造性思维和探索能力的工作:测试人员具有独特的创造性思维和探索能力,能够对不同场景的测试策略进行调整,能够发现系统中的潜在问题和未知的边界情况,可以通过假设和试验来寻找不同的测试路径,并提供有价值的反馈和改进建议。

2024-02-23 16:51:47 681

原创 测开外传之 数据结构与算法(Java语言描述)

一般情况下,算法中基本操作重复执行的次数是问题规模 n 的某个函数,用 T(n)表示,若有某个辅助函数 f(n),使得当 n 趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称 f(n)是 T(n)的同数量级函数。记作 T(n)=O(f(n)),称 O(f(n)) 为算法的。常见的算法的时间复杂度从低到高分别为:O(1)(常数阶)、O(logn)(对数阶)、O(n)(线性阶)、O(nlogn)(线性对数阶)、O(n ²)(平方阶)、O(n ³)(立方阶)、O(2 ⁿ)(指数阶)、O(n!

2024-02-22 16:57:10 282

原创 华为、腾讯、淘宝面试流程+面试技术题分析,预热金三银四!

2 面同一天完成,通过的话会让你留下等待下一轮面面试,1 面先是自我介绍,然后问我怎么看待软件测试这个职位,c 语言中是怎样分配内存的,引用和指针的区别,还有问我项目方面的一些问题;(1)写出创建学生表表结构的语句,其中数据类型如下:S#-varchar(10),Sname- varchar(10) ,Sage- int,Ssex-char(2),约束如下:主键-学生编号,姓名非空。选择填空都是一些 c/c++ ,数据结构,计算机系统方面的基础题目,主观题考了一道智力题,然后就是算法题和程序题。

2024-02-21 19:47:55 725

原创 用 docker 创建 jmeter 容器,能做性能测试?

2024性能测试保姆级教程全套完整版【jmeter性能测试实战,jmeter性能测试、jmeter压力测试】共计10条视频,包括:1、jmeter性能测试之性能压测理论基础必备、2、jmeter性能测试之性能压测指标详解以及测算、3、jmeter性能测试之企业真实压测流程等,UP主更多精彩视频,请关注UP账号。另外,在助攻机的维护上,也变的更加简单,因为所有的助攻机容器都是基于相同的镜像创建,理论上,所有容器都是一样。注意:请不要指定为低于 5 的版本,低于 5,生产的 HTML 报告可能有问题。

2024-02-20 16:24:36 622

原创 3分钟,学会一个测试员必懂 Lambda 小知识!

答:只包含一个抽象方法的接口,称为函数式接口 (functional interface) , 一般用。答:当我们需要完成的 Lambda 体操作,已经有实现的方法了,可以使用方法引用!方法引用使用操作符 :: 将方法名和对象或类的名字分开。问:Lambda 表达式的类型是什么?注解来检测是否是函数式接口。问:函数式接口是什么?问:为什么用方法引用?答:省略参数,少写代码。问:什么是方法引用?

2024-02-19 15:37:08 174

原创 msyql 异常,别干着急,70%的问题都在这里!

我们上课,是需要所有学员动手安装 MySQL 数据库的,虽然,安装方法很多,但是,使用 yum 命令来安装,又是每个学生都必须掌握的,所以,我上课时,用以前上课通用的 yum 命令来安装 mysql5.7 版本。Tips:下面的方法,都是新安装 MySQL,所以,我可以不用做数据库备份,如果,你在 2022 年 2 月 16 日后,看到这篇文章,或者你的 MySQL 数据库出了问题,请先做好数据库备份。ok,完美解决,三个办法,我实操都可以,你有没有遇到上面的问题呢,遇到了赶紧去试试吧!

2024-01-16 16:04:23 899

原创 超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦

通过这些钩子我们可以对 pytest 用例收集、用例执行、报告输出等各个阶段进行干预,根据需求去开发对应的插件,以满足自己的使用场景。钩子函数在 pytest 称之为 Hook 函数,它 pytest 框架的开发者,为了让用户更好的去扩展开发预留的一些函数。每个钩子函数可以在多个插件中实现,每个钩子和执行的函数比是:1:N。pytest 中的钩子函数按功能一共分为 6 类:引导钩子,初始化钩子、用例收集钩子、用例执行钩子、报告钩子、调试钩子,本文主要给大家介绍引导钩子和初始化钩子。

2024-01-15 15:39:47 807

原创 没有自动化测试项目经验,3个项目帮你走入软测职场!

这是一个网页 ui 元素展示网站,列举了几乎所有流行的网页控件,如果你正在学 selenium 这样的框架,那可以赶紧用这个项目练习一下 selenium 的操作方法。总的来说,在没有正式的项目经验前,找到一个合适的练手项目,把自己的专业知识转变成可以应用的技能,还是非常好的。常见的电商网站操作在这个项目中都可以找到,比如注册,登录,查找商品,选择商品,添加购物车,下单,查看定位,确认收货地址等等。业务简单,流程清晰,操作类型丰富,几乎是完美的练习平台,非常适合练习 Web 自动化测试。

2024-01-14 16:38:42 474

原创 工作每天都在用的 DNS 协议,你真的了解么?

当配置完成之后,就算 www.tricy1.com 这个域名不是一个真实注册的域名,在本台电脑里依然可以访问 www.tricy1.com 这域名就可以访问到这个 IP 地址对应的网站(柠檬班的测试派论坛)。我们经常访问一些网址的时候,浏览器里输入类似于 www.baidu.com 这样的地址,那么在浏览器里输入这个地址---> 百度服务器给我们返回这个百度的页面,中间的过程是什么样的呢?如果本地域名服务器无法解析,自己会以 DNS 客户机的身份向其它域名服务器查询,直到得到最终的 IP 地址告诉本机。

2024-01-12 16:43:57 903

原创 还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~

des 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时 , 必须共同持相同的密码。在 python 中有一个叫做 pyDes 的第三方库可以用来实现 DES 加密,使用之前需要先通过 pip 命令安装:pip install pyDes。

2024-01-11 16:28:15 960

原创 面试遇到了接口分析和测试用例分析题,该如何下手?

只要有软件产品的公司百分之九十以上都会做接口测试,要做接口测试的公司那是少不了接口测试工程师的,接口测试工程师相对于其他的职位又比较轻松并且容易胜任。3).分析请求和响应:根据接口文档,请求信息中请求的方法(GET、POST、PUT、DELETE等)、请求头、请求体、请求参数等;1).分析接口文档了解接口的详细信息掌握接口实现的功 能:包括接口的请求和响应格式、参数说明、返回值等。5).确定测试场景:根据接口的功能和业务需求,确定需要测试的场景。3).入参规则的测试,各类型 的返回码的构造数据的测试。

2024-01-10 16:01:55 882

原创 逐步分解,一文教会你如何用 jenkins+docker 实现主从模式

sources.list 作用说明:官方提供的 jenkins/ssh-slave 并没有 python,需要安装 python 就要去更新他的安装包,此时如果使用他默认的镜像源会非常慢,因此我们换一个更快的源,将它原来的文件覆盖掉就行了,这里要根据自己的版本号进行修改,我的是 buster 版本,当然你下载后也应该是和我的一样。验证,查看 docker 进程,如果 docker 守护进程在已经监听 2375 的 tcp 端口,就算成功开启了 2375 端口。

2024-01-09 19:22:08 897

原创 HttpRunner(22):httprunner设置代理及请求证书验证

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。httprunner 库本身没有提供设置代理的接口,但是底层使用了urllib.requests 等库,可以设置HTTP_PROXY 和HTTPS_PROXY 环境变量,常用的网络库会自动识别这些环境变量。

2024-01-08 15:12:27 377

原创 HttpRunner(21):httprunner运行方式

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。hrun:httprunner的缩写,功能与httprunner完全相同 例:hrun ./项目文件的路径 、httprunner ./项目文件的路径。在项目的根目录下新建一个py文件,如下图:run_httprunner.py。注意:此方式不会自动生成测试报告。

2024-01-07 15:55:10 409

原创 HttpRunner(20):脚手架工具使用(一键搭建)-httprunner运行方式

hrun:httprunner的缩写,功能与httprunner完全相同 例:hrun ./项目文件的路径 、httprunner ./项目文件的路径。每一个成熟的系统工具,都会有对应的脚手架工具,它可以快速构建项目的必要目录,不必自己一个一个的配置与搭建,只需要执行一些命令即可。1、在pycharm中的 Terminal 命令模式下中输入命令,先输入cd .. 退出所在的项目;在项目的根目录下新建一个py文件,如下图:run_httprunner.py。2、httprunner ./项目文件的路径;

2024-01-05 16:37:10 429

原创 HttpRunner(18):录制工具使用--使用抓包工具通过命令转成yml文件

为了简化测试用例的编写工作,HttpRunner实现了测试用例生成的功能,对应的转换工具为一个独立的项目:har2case。2、通过命令har2case har的数据包路径 -2y或--to-yml 转为yml文件,默认转为json格式。3、跳出保存窗口,选择文件类型为 .har 后缀名,保存路径在httprunner项目下;4、执行命令:har2case har的数据包路径 -2y 转成baidu.yml文件;4、执行命令:har2case har的数据包路径 -2y 转成 .yml文件;

2024-01-04 16:01:06 402

原创 HttpRunner(17):实现参数化传递

通过testsuite层下testcases中的variables传递参数,如下图的search_word参数,可以传递至testcases层或api层相对应的$search_word中。通过testsuite下testcases中的parameters传递参数,如下图的search_word参数,可以传递至testcases层或api层相对应的$search_word中。第一步:在项目的根路径下新建data文件夹,在该文件夹中新建csv文件,文件中填写对应的数据,可以有多列,需要使用英文逗号隔开。

2024-01-03 16:26:51 923

原创 HttpRunner(16):响应中文乱码处理

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。图1中 extract 提取title标题,output 输出 title 变量值,如下图2可见,输出的变量值成了乱码,图3的报告中可以看到响应的编码为 ISO-8859-1。在yaml文件中,断言引用函数需要加引号 " ",如下图。

2024-01-02 19:46:24 423

原创 HttpRunner(11):忽略跳过用例--skip/httprunner的测试用例分层机制

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。测试用例集(testsuite)是测试用例的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的;可以在testcases层调用多个api层的接口,可以做成几个子套件,在testsuites层做个主套件,可以调用多个testcases层的用例;

2023-12-29 17:20:02 911

原创 HttpRunner(10):辅助函数debugtalk.py、初始化和清理操作--hook机制

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。Httprunner框架中,使用yaml或json文件进行用例描述,无法做一些复杂操作,如保存一些数据跨文件调用,或者实现一些复杂逻辑判断等,为了解决这个问题,引入了debugtalk.py辅助函数来进行一些复杂操作。

2023-12-28 15:24:25 867

原创 HttpRunner(9):环境变量&跨文件传递变量值&输出变量值

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。在下图中用例层 引用 用例层的接口,可以通过extract 关键字提取上图中跨文件传输的变量 - token,书写格式一样:关键字下:- 变量。下图中 export 关键字下的 - token,可以输出变量值,也可以进行跨文件传输。

2023-12-27 15:19:14 884

原创 HttpRunner(8):接口关联及断言

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。第一个test接口获取token,并提取出存储到变量中,在第二个test接口中直接调用该变量,如下图。断言操作一般都用在testcases用例层做业务断言,api层只是做简单的断言。在yaml文件中,断言引用函数需要加引号 " ",如下图。

2023-12-26 16:51:47 79

原创 HttpRunner(7):获取响应数据&extract提取值到变量

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。通过 extract 提取响应正文的数据并存储到变量中(提取json数据),格式以content为根节点:content.key.key.key;注:如果断言为中文,加上headers头部的Accept-Language即可,后面有专门写的中文乱码解码的问题解决。

2023-12-25 15:14:25 53

原创 HttpRunner(6):模拟发送POST请求

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili。发送POST请求可通过发送的数据选择 json/data/body/ 添加数据。可通过headers 添加头部信息,如下图。

2023-12-24 15:53:35 63

原创 HttpRunner(2):模拟发送GET请求&自动生成测试报告

1、首先在python项目下新建一个 testcases 文件夹,然后再新建一个以 .yml 的文件后缀名,如demo01.yml。在pycharm中点击下方的Terminal,输入命令httprunner yml测试脚本路径执行,如下图。发送GET请求可通过params添加参数。base_url:测试主机地址。request:请求信息配置。name:测试用例名称配置。headers: 请求头部。validate:断言设置。params:url参数。method:请求方式。

2023-12-22 17:16:23 77

原创 HttpRunner(1):HttpRunner介绍

2、Python 版本:HttpRunner 支持Python 3.4 及以上的所有版本,并使用Travis-CI 进行了持续集成测试,测试覆盖的版本包括2.7/3.4/3.5/3.6/3.7。HttpRunner 是一款面向HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。在自动化测试框架中,常应用于自动化测试过程,用来进行数据驱动的数据存储载体,如典型的httprunner。

2023-12-21 16:30:26 100

原创 一款简单好用的 Mockoon 工具,让 Mock 上手如此简单!

在我们的项目里,有很多的场景下,需要做一些Mock:场景1:上游现在接口没有开发完,想要跑通整个业务流程,就可以Mock假的接口把流程调通 【Mock模拟上游接口的响应结果,给下游接口提取从而执行接口测试】场景2:涉及到第三方接口,比如支付接口,需要付费对接第三方,在测试环境的时候很多都没有对接好,也需要Mock模拟一个支付成功或者失败的接口,然其他的接口可以跑通。所以,Mock服务就类似于做汽车碰撞测试,用假人模拟真人一样的,减少成本达到测试的目的。很多mock工具可以造一些Mock的服务出来,我们今天讲

2023-12-20 15:25:49 116

原创 驾驭Selenium:从入门到精通,构建强大的Web自动化测试框架之旅

Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器(如 Chrome、Opera 和 Microsoft Edge)中的工具,用于帮助开发人员调试和研究网站。借助 Chrome DevTools,开发人员可以更深入地访问网站,并能够:检查 DOM 中的元素即时编辑元素和 CSS检查和监控网站的性能模拟用户的地理位置模拟更快/更慢的网络速度执行和调试 JavaScript查看控制台日志等等通过添加 CDP API,Selenium 已经变得更加强大。

2023-12-19 16:19:39 89

原创 要想用好linux,先把shell 搞明白

echo $PATHhello="hello_world"echo $hello(2 种方式,推荐使用第二中,第一种是 ~键上面的斜点比较难识别)files=path=(pwd)注意点定义变量=号两边不能有空格使用变量需要加 符号如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386 【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔

2023-12-18 16:07:07 65

原创 selenium 做 Web 自动化,鼠标当然也要自动化!

ActionChains 类中其他方法使用方式都一样,大家有空可以试一下ActionChains 类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可特别注意:ActionChains 的执行原理,当你调用 ActionChains 的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用 perform()方法时,队列中的时间会依次执行。ActionChains 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。t=N7T8。

2023-12-17 16:21:22 86

原创 Pytest新手指南:轻松掌握Python测试框架

下面我们首先来简单介绍Pytest及相关内容下面我们来简单介绍Pytest框架:pytest是一个非常成熟的单元测试框架,经过多版本的迭代,主要优点在于灵活和简单pytest具有极强的兼容性和生态环境,它可以结合selenium,requests,appium完成各种不同的自动化pytest具有更好的页面展示效果,它可以生成自定义allure报告以及和Jenkins持续集成下面我们给出一些和Pytest框架可以很好聚合的框架类型:pytestpytest-html:主要用来生成html报告的插件。

2023-12-15 15:57:37 71

原创 让测试效率起飞的8款浏览器兼容性测试工具,你get了吗?

Browserstack 是一个非常著名的多系统跨浏览器兼容性测试平台,支持 9 大操作系统上的 3000 种浏览器,覆盖所有旧版本的 Internet Explorer(IE6 - IE11),最新测试版和开发版(Edge,Safari,Chrome,Firefox,Opera 和 Yandex)以及各种真实的 iOS 和 Android 设备。浏览器的兼容性问题,是指不同浏览器使用内核及所支持的 HTML 等网页语言标准不同,用户客户端的环境不同造成的显示效果不能达到理想效果。

2023-12-14 16:01:04 311

原创 没踩过GIT这几个坑的你程序员不是好测试!

Git(读音为/g ɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开源的版本控制软件。版本控制工具是践行 devops 理念,CI/CD 中的一个环节,是自动化测试工程师不可或缺的一门技术。

2023-12-13 15:49:45 61

原创 等到被Python错误重试逼疯了,才看到这篇文章就迟了!

● stop_after_delay()和 stop_after_attempt()组合使用,只要其中一个条件满足,任务就停止。● wait_fixed(3) 与 wait_random(0, 2)组合使用,两个条件都满足。raise Exception('手动抛出异常')raise Exception('手动抛出异常')raise Exception('手动抛出异常')raise Exception('手动抛出异常')raise Exception('手动抛出异常')

2023-12-12 15:48:05 60

原创 API接口用例生成器

API接口用例生成器,采用 Python 编写,利用了Tkinter 进行 GUI 封装。特点:1、支持 GET、POST 请求方式2、支持 HTTP、HTTPS 请求协议3、支持连续生成接口用例4、支持创建不同 Sheet 页5、根据操作系统,分为 Windows(.exe)、Mac(.app) 版本,无需安装,即可使用。

2023-12-11 16:05:23 69

原创 Pytest框架 — 16.Pytest参数化

在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据是无法完全覆盖测试范围的,所以需要参数化来传递多组数据。(参数)是Fixture函数名,此时Fixture函数名将是一个可执行的函数,Fixture装饰器返回的数据作为。:参数值,类型可以是列表,元祖,字典列表,字典元祖,有多个值用例就会执行多少次。:参数名,使用逗号分隔的字符串,或列表或元祖,表示一个或多个参数名。时,Fixture函数只作为一个参数名,给测试收集阶段调用。软件测试中,输入相应值,检查期望值,是常见测试方法。

2023-12-10 13:43:18 81

原创 Pytest框架 — 15.conftest.py文件的使用

文件是Pytest框架里面一个很重要的东西,它可以在这个文件里面编写Fixture函数,这个Fixture函数的作用,就相当于Unittest框架里面的setup()前置函数和teardown()后置函数,虽然Pytest框架也有setup()前置函数和teardown()后置函数,但是在实际工作中没必要写在测试用例文件中,直接写在里面就好了,Pytest框架会自动去找文件里面的东西,这样更灵活。总结:在实际工作中,通常和结合使用,实现全局的前后置应用。Pytest框架中的函数,函数。

2023-12-08 15:42:30 235

原创 Pytest框架 — 14.Fixture装饰器的参数说明示例

2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2023新版)共计32条视频,包括:1、Pytest简介、2、Pytest之pytest测试用例的运行方式、3、Pytest之pytest执行测试用例的顺序是怎样的呢?2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!文件中配置的模糊匹配查询,这样两个文件中的用例就都能执行到了。这里就是一个练习,写的十分不规范,理解其意思就可以。很简单,只需要把Fixture中的。

2023-12-07 15:10:30 82

原创 Pytest框架 — 13.Fixture装饰器的使用(三)

2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2023新版)共计32条视频,包括:1、Pytest简介、2、Pytest之pytest测试用例的运行方式、3、Pytest之pytest执行测试用例的顺序是怎样的呢?我们可以选择让Fixture返回我们需要的东西,如果Fixture需要配置一些数据,读个文件,或者连接一个数据库,那么你可以让Fixture返回这些数据或资源。值,有没有在原来的参数列表中。说明:Fixture装饰类中,也可以实现数据的准备。

2023-12-06 16:21:05 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除