关于接口测试自动化的总结与理性
2025-08-13 12:19
以太网试验里电子化时的原则
这里为为基础我多半在认真以太网试验里时的一些方面,概述了一些以太网试验里电子化时的原则,抛砖引玉,注目大家必要。
软件包准备磨刀不误砍柴工,准备分详述的以太网相合关软件包必须帮助后续以太网电子化时试验里实习的高效落幕。相合关软件包都有但不局限一下章节:
1、《供给软件包》,一致假定了:以太网背后的金融业务布景,即该以太网是干什么用的,加进哪里,每次呼叫就会时有发生什么等;
2、《以太网软件包》,一致假定了:以太网名,各个退参值,各个C#,和其他相合关讯息;
3、《UI 交互绘单单》,一致假定了:各单页面须要展示的样本;页面二者之在在的交互等;
4、《样本表其设计软件包》,一致假定了:表字段原则上、表 N 多 N 关系(一对一、一对多、多对多)等;
务必和相合关供给方核实好软件包里的讯息是有效且最另行的,只有依赖性有效的软件包才能其设计单单正确地详实的以太网用例,才能得到最正确地的结果。
一致以太网试验里电子化时须要要的机制1、匹配(确实)
试验里确实是电子化时试验里里的试验里通过条件,常用判断试验里用例否不符预期。所以默许对C#匹配是一个须要要的机制。
2、样本受控
样本受控所大部分指真是明的允诺以太网、实例、匹配等样本认真到与软件包相合受控,便于维护,一旦须要要缩减以太网用例、另行增以太网用例时可很短时在在的找到位置。受控的另一个某种程度就是可复用,基本可以推广给其他制作组,运常用者可以运常用大致相合同的软件包,只须要要根据拒绝填撰写各自用例均可试验里痛快。
3、样本收发到
认真到样本受控可维护后,样本收发到是另外一个非常举足轻重的供给。以太网试验里时,首可先我们就会借助单以太网解出耦,后续按照金融业务布景混搭多个以太网。而样本收发到是则是混搭多个以太网的必要条件,它让以太网用例二者之在在可以认真到向下传参。举个范例,我们通过器材讯息核对以太网核对到这两项金牛座魔王音箱的器材讯息,该以太网就会赶回一个 UUID,接下来我们要通过软件讯息核对以太网去核对这两项器材附加的软件讯息,此时第二个以太网的允诺样本是须要要从第一个以太网用例里的赶回里提取的。
4、机制formula_
实际的金融业务布景试验里就会须要要各种辅助机制的默许,比如随机生形同一段时在在手脚,允诺 ID,随机的iPhone号码或位置讯息等等,此时我们就须要要软件包可以默许认真到标识相合异页面时可以分派相合异的机制formula_进行时填充。
5、可固定式
现阶段试验里周围环境都有但不局限日常、预发一、预发二、线上等等,因此用例不单单必需在一个周围环境上分派,须要要同一份以太网用例可以在日常、预发、线上等多个周围环境都可以分派。所以基本须要要认真到可固定式,便于预设,呼叫并不相合同的固定式邮件可以在并不相合同的周围环境分派。6、快照快照还都有分派的真是明分派以太网、允诺手段、允诺实例、C#、匹配以太网、允诺一段时在在、耗时等关键讯息,快照的某种程度一来是可以便于在另行增用例有问题时短时在在聚焦单单哪里填撰写有问题,二来是找到 bug 时易于向开发其设计反馈共享样本,开发其设计可以从会有一段时在在以及实例等讯息短时在在聚焦到问题所在。
7、GIS时通报
用例分派后,就是到了向制作组展示结果的时候了,一个GIS时的通报可以便于制作组形同员了解出到每次电子化时以太网用例分派的急于数、挫败数等样本。
8、可短一段时在在集形同
对于并未有试验里用例并试验里完形同的以太网,我们期盼必须形形同回归用例,在下一个原版本插值或上架以后,通过较早用例进行时一个回归试验里,确保另行上架的机制不受到影响较早机制。因此,这就须要要以太网电子化时试验里是可短一段时在在集形同的而不是一次性的。
以太网试验里电子化时基本选型为为基础我们对以太网试验里电子化时基本的供给及现阶段市场上的很多试验里物件的特性,概述形同下表:
这里简单列举一下:
1、fiddler
fiddler 是一个 HTTP 双方同意调试全权负责物件,Web 和iPhone试验里都就会加进,同时也默许以太网试验里。它必须记录并健康检查所有你的微电脑和的网络二者之在在的 http 电信,设置断点,核对所有的“进单单”Fiddler 的样本(大部分指 cookie,html,js,css 等邮件)。
2、postman
它是 Google 开发其设计的一个API,安装在 Chrome 搜索引擎上,能默许并不相合同以太网试验里允诺,可以管理试验里套件和电子化时试运行。弱点是电子化时确实机制不有力,不能和 Jenkins、软件包管理库里进行时短一段时在在集形同试验里。
3、wireshak
这是一款抓包物件,默许 TCP、UDP、HTTP 等双方同意。如果认真底层网络样本试验里,一般都须要要加进它,但是用作以太网试验里,它就太不友好。因为刷另行样本太快,坏聚焦每个可用相合异的以太网。
4、soupUI
soapUI 是一个OpenBSD试验里物件,通过 soap/http 来健康检查、呼叫、借助 Web Service 的机制/负载/不符性试验里。该物件既可作为一个单独的试验里软件运常用,也可运用API集形同到 Eclipse,maven2.X,Netbeans 和 intellij 里运常用。把一个或多个试验里套件(TestSuite)组织痛快形同单项,每个试验里套件还都有一个或多个试验里用例(TestCase),每个试验里用例还都有一个或多个试验里两步,都有收发允诺、不能接受鼓动、分析结果、忽略试验里分派方式上等。该物件必须默许以太网电子化时试验里和以太网性能试验里,也默许和 Jenkins 认真短一段时在在集形同试验里。
5、Java 软件包认真以太网试验里
为什么要用软件包认真以太网电子化时试验里呢?一些物件机制是有受到限制,很多一些公司须要要一些特定的机制,物件不默许,赶紧用软件包进行时开发其设计。一般用 Java 认真电子化时试验里,主要运用 httpclient.jar 包,然后运用 JUnit 或者 TestNG 这样的单元试验里物件,进行时试验里用例的开发其设计,接着在 Jenkins 或我们的 aone 上创建一个 job,进行时短一段时在在集形同试验里。
6、Python 软件包认真以太网试验里
和 Java 一样,用 Python 认真以太网试验里,可以运用一个机制有力的第三方库里 Requests,它能易于地创建以太网电子化时用例。Python 下的单元试验里基本,一般采用 unittest。生形同试验里通报,一般选取 HTMLTestRunner.py。值得注意,可以为为基础 Jenkins 认真短一段时在在集形同试验里。
以太网试验里电子化时概念化时
TestNG 与 Junit 对比
综合性对比我在日常试验里实习里,运常用的比较多的电子化时试验里物件是 Java 软件包认真以太网试验里,这里可先概述下我对单元试验里物件 TestNG 和 Junit 的对比。可先用一张表格概述一下他们的特性对比。
TestNG 与 JUnit 的大致相合同点如下:
1、都有评注,即都运常用 annotation,且以外 annotation 大致相合同;
2、都可以进行时单元试验里(Unit test);
3、都是针对 Java 试验里的物件;
TestNG 与 JUnit 的并不相合同点如下:
1、TestNG 默许的评注非常颇为丰富,如@ExpectedExceptions、@DataProvider 等;
2、JUnit 4 里拒绝@BeforeClass、@AfterClass 方法有声明为 static,这就受到限制了该方法有里运常用的变量须要要是 static。而 TestNG 里@BeforeClass 修饰的方法有可以跟普通formula_完全一样;
3、JUnit 必需运常用 IDE 试运行,TestNG 的试运行手段有:GUI、ant 和 IDE;
4、JUnit 4 依赖性性颇为强,试验里用例在在有严格的可顺序排列。前一个试验里不急于,后续所有的依赖性试验里都就会挫败。TestNG 运用@Test 的 dependsOnMethods 属性来应对试验里依赖性性问题。某方法有依赖性的方法有挫败,它将被跳过,而不是标有为挫败。
5、对于 n 个并不相合同实例混搭的试验里,JUnit 4 要撰写 n 个试验里用例。每个试验里用例完形同的任务基本是大致相合同的,只是方法有的实例有所忽略。TestNG 的实例化时试验里只须要要一个试验里用例,然后把所须要要的实例加到 TestNG 的 xml 固定式邮件里或运常用@DataProvider 手段注退并不相合同的实例。这样的某种程度是实例与试验里软件包分离,非流程员也可以修改回实例,同时修改回无须要重另行程序代码试验里软件包。
6、JUnit 4 的试验里结果通过 Green/Red bar 体现,TestNG 的结果除了 Green/Red bar,还有 Console 窗口和 test-output 邮件夹,对试验里结果的阐述越多来越多详述,易于聚焦严重错误。
详述结构上对比下面详述概述一下 TestNG 与 Junit 结构上对比:
1、基本建构:
Spring+TestNG+Maven 建构:
pom.xml 里减低 testng 依赖性:org.testng
testng
6.8.8
test
试验里类减低 1 条评注@ContextConfiguration(locations = "classpath:applicationContext.xml")并继承 AbstractTestNGSpringContextTests,例证如下@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class BaseTest extends AbstractTestNGSpringContextTests{
@Test
public void testMethods() { ...... }
}
Spring+Junit+Maven 建构:
pom.xml 里减低 junit 依赖性:junit
junit
4.4
test
试验里类减低 2 条评注@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml"),如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class BaseTest{
@Test
public void testMethods() { ...... }
}
2、评注默许
主要区别不限的点:
1、在 JUnit 4 里,我们须要要声明“@BeforeClass”和“@AfterClass”方法有作为模板方法有。TestNG 在方法有声明里非常灵活,它没有这个约束。
2、在 JUnit 4 里,注释命名约定太恐慌,例如“Before”,“After”和“Expected”,我们并不真正了解出“Before”和“After”以后的章节,以及要试验里里的“预期” 方法有。TestiNG 容易显然,它运常用类似“BeforeMethod”,“AfterMethod”和“ExpectedException”就很明了。
3、诱发试验里
“诱发试验里”是大部分指从单元试验里里抛单单的诱发,此机制在 JUnit 4 和 TestNG 里都可借助。JUnit 4
@Test(expected = ArithmeticException.class) public void divisionWithException() { int i = 1/0; }
TestNG
@Test(expectedExceptions = ArithmeticException.class) public void divisionWithException() { int i = 1/0; }
4、显然试验里
显然试验里意思是在单元试验里哪些是可以被显然的,这个结构上在两个基本都并未借助。
JUnit 4
@Ignore("Not Ready to Run") @Test public void divisionWithException() { System.out.println("Method is not ready yet"); }
TestNG
@Test(enabled=false) public void divisionWithException() { System.out.println("Method is not ready yet"); }
5、出错试验里
一段时在在试验里意思是如果一个单元试验里试运行的一段时在在超过了一个而无须的毫秒数,那么试验里将终止并且标有为挫败的试验里,这个结构上在两个基本都并未借助。
JUnit 4
@Test(timeout = 1000) public void infinity() { while(true); }
TestNG
@Test(timeOut = 1000) public voi
6、套件试验里
“套件试验里”是大部分指锁住几个单元试验里并两人试运行。此机制在 JUnit 4 和 TestNG 里都可借助。然而,两者都运常用颇为并不相合同的方法有来借助它。
JUnit 4
“@RunWith”和“@Suite”常用试运行套件试验里。下面的类软件包回应在 JunitTest3 分派以后,单元试验里“JunitTest1”和“JunitTest2”两人试运行。所有的声明都是在类内假定的。
@RunWith(Suite.class) @Suite.SuiteClasses({ JunitTest1.class, JunitTest2.class }) public class JunitTest3 { }
TestNG
XML 邮件常用试运行套件试验里。不限 XML 邮件回应单元试验里“TestNGTest1”和“TestNGTest2”将两人试运行。
TestNG 可以认真锁住类试验里,也可以锁住方法有试验里。凭借 TestNG 独特的“两组”概念,每种方法有都可以与一个混搭相合为为基础,可以根据机制对试验里进行时分类(两组)。例如,
下面是一个有四个方法有的类,三个组(method1,method2 和 method3)
@Test(groups="method1") public void testingMethod1() { System.out.println("Method - testingMethod1()"); }
@Test(groups="method2") public void testingMethod2() { System.out.println("Method - testingMethod2()"); }
@Test(groups="method1") public void testingMethod1_1() { System.out.println("Method - testingMethod1_1()"); }
@Test(groups="method4") public void testingMethod4() { System.out.println("Method - testingMethod4()"); }
运常用不限 XML 邮件,可以大部分运常用组“method1”分派单元试验里。
7、实例化时试验里
“实例化时试验里”是大部分指单位试验里实例值的变化时。此机制在 JUnit 4 和 TestNG 里都借助。然而,两者都运常用颇为并不相合同的方法有来借助它。
Junit4 实例化时试验里:
两步如下:1.通过@Parameters 标识模板实例形态方法有
2.通过试验里类形态方法有转用实例
3.试验里方法有运常用实例
@RunWith(value = Parameterized.class)
public class JunitTest {
private int number;
public JunitTest6(int number) {
this.number = number;
}
@Parameters
public static Collection data() {
Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
return Arrays.asList(data);
}
@Test
public void pushTest() {
System.out.println("Parameterized Number is : " + number);
}
}
某种程度: 一个试验里类必需有一个模板的实例形态方法有; 试验里类须要要运常用@RunWith(Parameterized.class),未适配器 spring-test 的 runner @RunWith(SpringJUnit4ClassRunner.class),就会导致未通过评注注退待测维修服务 须要要在试验里类里去除一个形态方法有(一种冗余其设计)TestNG 实例化时试验里:
两步如下:1.通过@dataProvider 评注标识实例形态方法有
2.试验里方法有在评注@Test 里通过 dataProvider 属性而无须实例形态方法有,便可在试验里方法有里运常用实例
@Test(dataProvider = "Data-Provider-Function")
public void parameterIntTest(Class clzz, String[] number) {
System.out.println("Parameterized Number is : " + number[0]);
System.out.println("Parameterized Number is : " + number[1]);
}
除此之外,TestNG 还默许通过 testng.xml 形态实例:
public class TestNGTest {
@Test @Parameters(value="number")
public void parameterIntTest(int number) {
System.out.println("Parameterized Number is : " + number);
}
}
XML 邮件的章节如下
8、依赖性试验里
“实例化时试验里”回应方法有是依赖性性试验里,它将在所须要方法有以后分派。如果依赖性方法有挫败,则所有后续试验里必定就会被跳过,不就会被标有为挫败。
JUnit 4
JUnit 基本专注试验里受控; 现阶段它不默许此机制。
TestNG
它运常用“dependOnMethods”来借助依赖性试验里如下
@Test public void method1() {
System.out.println("This is method 1");
}
@Test(dependsOnMethods={"method1"})
public void method2() {
System.out.println("This is method 2");
}
TestNG 以太网电子化时概念化时
实例化时试验里示例以 DeviceStatusHSFService 为例,试验里类如下:
public class DeviceStatusHSFServiceTest {
private DeviceStatusHSFService deviceStatusHSFService;
@BeforeTest(alwaysRun = true)
public void beforeTest() {
String envName = System.getProperty("maven.env"); //试运行周围环境可固定式
SwitchENV switchEnv = new SwitchENV(envName); //试运行周围环境可固定式
deviceStatusHSFService = HsfRepository.getConsumer(DeviceStatusHSFService.class, switchEnv.getEnv(),
"HSF", switchEnv.getHsfVersion(), "aicloud-device-center", switchEnv.getTargetIp()).getTarget();
}
@Test(dataProvider = "updateDeviceStatus", dataProviderClass = DeviceStatusHSFServiceTestDataProvider.class)
public void updateDeviceStatusTest(Long userId, String uuid, DeviceStatus deviceStatus){
Result result = deviceStatusHSFService.updateDeviceStatus(userId, uuid, deviceStatus);
System.out.println("traceId:"+EagleEye.getTraceId()+result.toString());
Boolean res = result.getResult();
assertTrue(res);
}
}
其里通过 SwitchENV 类借助试运行周围环境可固定式:
/**
* 自假定周围环境固定式
*/
public class SwitchENV {
/**
* 试运行周围环境
*/
private Env env;
/**
* hsf周围环境
*/
private String hsfVersion;
/**
* 目标机械设备
*/
private String targetIp;
/**
* 周围环境名称
*/
private String envName;
public SwitchENV(String envName) {
Properties prop = new Properties();
// TODO: 本地电子化时试验里预设周围环境大部分供
if (envName == null) {
envName = "pre1";
}
switch (envName) {
case "online": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-online.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.ONLINE;
break;
}
case "pre1": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre1.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
case "pre2": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre2.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
case "pre3": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre3.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
default:
try {
throw new Exception("根目录重定向严重错误!");
} catch (Exception e) {
e.printStackTrace();
}
break;
}
hsfVersion = prop.getProperty("hsfVersion").trim();
targetIp= prop.getProperty("targetIp").trim();
this.envName = envName;
}
public Env getEnv() {
return env;
}
public String getHsfVersion() {
return hsfVersion;
}
public String getTargetIp() {
return targetIp;
}
public String getEnvName() {
return envName;
}
}
试验里实例全部放在 DeviceStatusHSFServiceTestDataProvider 类里,借助真是明的允诺以太网、实例、匹配等样本认真到与软件包相合受控。
/**
* 自假定周围环境固定式
*/
public class SwitchENV {
/**
* 试运行周围环境
*/
private Env env;
/**
* hsf周围环境
*/
private String hsfVersion;
/**
* 目标机械设备
*/
private String targetIp;
/**
* 周围环境名称
*/
private String envName;
public SwitchENV(String envName) {
Properties prop = new Properties();
// TODO: 本地电子化时试验里预设周围环境大部分供
if (envName == null) {
envName = "pre1";
}
switch (envName) {
case "online": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-online.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.ONLINE;
break;
}
case "pre1": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre1.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
case "pre2": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre2.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
case "pre3": {
InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(
"config/application-pre3.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
env = Env.PREPARE;
break;
}
default:
try {
throw new Exception("根目录重定向严重错误!");
} catch (Exception e) {
e.printStackTrace();
}
break;
}
hsfVersion = prop.getProperty("hsfVersion").trim();
targetIp= prop.getProperty("targetIp").trim();
this.envName = envName;
}
public Env getEnv() {
return env;
}
public String getHsfVersion() {
return hsfVersion;
}
public String getTargetIp() {
return targetIp;
}
public String getEnvName() {
return envName;
}
}
理性与概述
对于以太网电子化时试验里,从用例其设计到试验里制笔记借助,概述痛快,须要要我们兼顾如下观点:
组件时观点 样本传动装置观点 页面传动装置观点组件时观点
对于我们的以太网电子化时试验里工程而言,须要要必须创建小而法理的可以阐述的模块、片断以及待测应用流程的制笔记。这些树状结构的小制笔记混搭痛快,就能组形同能常用特定的试验里用例的制笔记。
样本传动装置观点
简而言之,就是试验里制笔记与试验里样本分离。让试验里样本法理于试验里制笔记单独存有,解出除制笔记与样本二者之在在的强交互作用。试验里制笔记不再专责管理试验里样本,而试验里样本在样本传动装置试验里里就会以邮件或者样本库里的形式存有。制笔记每次分派就会机械设备的从样本邮件或者样本库里里读退试验里样本,根据试验里样本的并不相合同走过并不相合同的试验里路径。在整个试验里里,试验里制笔记是一形同不变的,它始终机械设备的分派它本身的软件包,而活着的是我们的试验里样本集,我们通过并不相合同的样本控制试验里制笔记里软件包的过渡到。这个观点必须避免试验里样本杂糅在试验里制笔记里,易于试验里样本的扩展。再者,在电子化时试验里里,为了可维持回归试验里的稳定一致,试验里制笔记理应尽量避免非常改回。在非样本传动装置的完全,恰恰违背了这一原则。电子化时试验里里,随着单项的熟悉,试验里制笔记必定就会短一段时在在增多,试验里样本和制笔记掐在两人?维护痛快必定就会是一件恐怖的事情,单单错在所难免,所以这时不要这样认真,让样本和制笔记分离,坚持惨死的软件包,活的样本,维护的以外实习将只面向样本。
页面传动装置观点
这是一种非常为高级的样本传动装置试验里,方法论是将试验里用例的每个两步单独封装形同一个formula_,以这个formula_名作为页面,将formula_名及传参撰写退邮件里,每个两步映射一行邮件。通过解出析邮件的每行章节,将章节拼形同一个formula_呼叫,呼叫封装好的两步formula_,就可以一步步分派试验里案例。在一个页面传动装置试验里里,待测应用流程的机制和每个试验里的分派两步将被两人撰写到一个表里。这一个观点通过大多的软件包来造成大量的试验里用例。值得注意的软件包在用样本表来造成各个试验里用例的同时被复用。
当我们的试验里观点越多靠近上述三种型式的观点,以太网试验里的借助将越多电子化时。随着电脑系统会的不断演进,AI崛起下也将诞生非常多的电子化时试验里物件,比如采用电脑系统会技术,通过某种自适应的算法来插值我们的试验里用例,生形同试验里制笔记。这大部分大部分,未来试验里人员的努力方向将在其设计单单越多来越多有效、高效的电子化时用例生形同物件、制笔记构建物件与试验里分派物件,而原可先那些重复劳动的人工试验里实习却说机智的机械设备帮我们认真吧。
以后
PTS 以太网试验里大部分限预售里,注目大家适用,点击阅读原文访问 PTS。
非常多交流,注目进钉钉群沟通,PTS 软件交流钉钉群号:11774967。
此外,PTS 近期对售卖手段认真了全另行升级,为基础原版市价直降 50%!5W 即刻市价只须要 199,免去自运维压测平台烦恼!非常有另行软件 0.99 体验原版、VPC 压测专属原版,注目大家点击此处选购!
原文页面:
本文为阿里云原创章节,未经允许不得转载。
。深圳牛皮癣专科医院哪里好汉中白癜风医院哪家好
海南男科病治疗费用
成都试管婴儿医院电话
常州男科医院挂号
-
第二届“大巴山文艺推优工程”启动 面向全国征集创作者
海报新闻记者 谢颖 7月22日下午,作为第十届人和民俗绘画节的六场——“秦岭新文学推优施工”新闻发布会在四川涪陵举行。本次活动由《西方绘画报》社员、涪陵书记宣传部联合主办,泛巴地区
-
本周推荐|《太阳和太阳穴》;《两只狗的生活意见》;《恋爱的犀牛》;高分电影剧集;热点展览......
割术 Squid Game 鱿鱼电子游戏 Stranger Things 怪尤续篇 Succession 继承者之战 Yellowjac
- 08-23品读 | 有了点年岁再次,慢慢染上的喜欢
- 08-23晚安 | 今日雨,明明要见面,还下雨吗
- 08-23敏感、孤独、完美主义?这毫无疑问是你独一无二的「天赋」
- 08-23汤峰:他管弦乐了新时代的“爱莲说”
- 08-233本值得熬夜看的完本后宫流爽文,渣男首选书单,道友请止步
- 08-23“百年无极”展出梵高、莫丹尼尔等欧洲艺术大师62幅珍品
- 08-23徐大椿医家古籍《医贯砭》
- 08-232200余件艺术知名品牌亮相北京荣宝2022春季拍卖会
- 08-23集结海内外前沿视角!“演艺大世界——2022上海国际音乐剧节”旨在推动零售业共同成长
- 08-23自闭症孩子层出不穷的行为问题,“棍子”在哪里