车载自动化项目:Python

1.  自动化测试用的什么框架?

第一种:Python+Selenium+uittest框架

首先是拿到需求文档,基于这个需求去进行搭建。
用pytest+request+allure 这些第三方库进行编写自动化脚本。

举个例子一般的话整个的一个自动化的搭建是分为6层嘛:

第一层:会去做一个公共层,里面去放一些方法,像可调用的公共函数、数据库之类的。(这些函数是放在yaml文件,存放一些数据库地址,还有URL路径还有业务中会用的比如车辆车型还有用户名密码这一些)

第二层:会做一个配置层,然后配置一些像config这样的yaml配置文件,log配置文件,环境配置文件,数据库的配置文件,里面会放一些路径,像我们业务当中会用到的一些密码信息之类的

第三层:数据层,里面会放一些比方说一些excle 表格

第四层:用例层,比方说云端升级任务。任务有分为手动、自动、预约。还有像任务的审核,审核之后下载,下发任务等。包括一些异常场景都在这个用例层里面。

第五层:主函数,就是调用以上分层里的方法实例。去执行这个测试用例吧。

最后就是报告层:生成一个allure 的报告大致就是这个样子。

第二种:如何介绍自动化项目

在面试过程中,要向面试官讲解自己做过的自动化项目。如何介绍,下面简单说下

可以参考:

面试官你好,最近我做的xxx项目中有接口自动化部分,下面简单给您介绍一下:

1.使用的技术主要是 Python + Pytest + Requests + CSV +pytest-html。

a.主要使用Python编程语言实现,

b.Requests 库主要用来模拟发送接口请求

c.Pytest 主要用来维护接口自动化测试用例。

d.CSV模块主要用来进行数据驱动(数据驱动也可以使用Excel文件,Excel文件使用 Openpyxl 库来操作)

e.pyhtml-html主要用来作为测试报告

2.另外在接口自动化也要处理接口的上下游传参

a.我在接口上下游传参的接口主要操作:

i.先定义字典格式的数据。

ii.在上游接口中编写用例,用例通过之后给字典赋值。

ii.在下游接口中引用字典中的字段值。

b.主要通过字典的方式继续上下游传参。

3针对单接口进行参数化处理的时候,主要使用 csv文件数据驱动

a.首先将测试数据保存到csv文件中

b通过Python的csv模块来读取csv文件中的内容

c借助pytes模块中的参数化功能进行数据驱动。

4.最后,自动化代码完成之后,将代码存放在公司的git服务器上,搭建Jenkins 平台,从Jenkins平台上运行接口代码,代码运行完成之后,通过Jenkins会自动发送邮件到公司邮箱。如果接口出现问题,可以第一时间收到通知。

以上就是我最近项目中使用的自动化。简单概括就是使用 Python+pytest+requests+Jenkins实现接口自动化平台的搭建。

3.python有哪些数据类型?

答:有基本数据类型和集合数据类型两种,基本数据类型有数字型(int,float,complex),字符串,布尔型;集合数据类型有列表,元祖,字典,集合。

4.列表和元祖的区别是什么?

答:共同点:访问数据,都是通过索引访问,都可以存放各种类型的数据

不同点:定义上---列表是[](中括号);元祖是()圆括号

使用上---可对列表进行增删改,元组不允许修改。

5.怎么把一个元祖转换为list?

答:python 把元组转为列表的方法是在元组前面添加list

list_a = (1, 9, 10, 6)
print(list_a)  # 打印结果 (1, 9, 10, 6) 元组是带小括号的
list_b = list(list_a)
print(list_b)  # 打印结果 [1, 9, 10, 6] 列表是带中括号的

6.List你怎么正向排序和反向排序?

答:正向排序(升序)--a.sort()

反向排序(降序)--a.sort(reverse=True)

7.列表和字典的区别是什么?

答:1.列表是有顺序的,如果按照某种顺序向列表添加元素,这些元素就会保持顺序;字典是无序的,如果向字典添加内容,显示的顺序可能会和添加的顺序不同

2.列表中的元素是使用索引访问的,而字典是使用键来访问的

8.Python循环体里面break和continue有什么区别?

答:break--在for循环或者while循环结构中使用break语句,用于结束整个循环

     continue--在for循环或while循环结构中使用break语句,用于跳过本次循环中的剩余语句,然后继续进行下一轮循环

9.Pycharm的自动化脚本的流程是怎么样的?

首先根据需求文档,确定做自动化的内容,在具体编写自动化测试用例前,我们需要建一个测试类继承unittest(就内泰斯特)里面的TestCase类,继承这个类之后我们才是真正的使用unittest(就内泰斯特)框架去写测试用例,编写测试用例的步骤如下:

1)首先导入unittest(就内泰斯特)模块

2)再就是创建一个测试类,并继承unittest.TestCase()

3)然后用setup()(斯塔普)和tearDown()函数来定义初始化工作和收尾工作

4)其次中间定义测试方法,方法名必须以test_为前缀

5)再就是在用例中添加断言判断来判断运行结果

常见的断言:assertEqual(a,b)-断言a和b是否相等,相等则测试通过

               assertNotEqual(a,b)-断言a和b是否相等,不相等则测试用例通过

               assertTrue(x)-断言x是否True,是True则测试通过

               assertFalse(x)-断言x是否False,是false则测试通过

               assertIs(a,b)-断言a是否是b,是则测试通过

               assertNotIs(a,b)-断言a是否是b,不是则测试通过

               assertIn(a,b)-断言a是否在b中,在b中则测试通过

               assertNotIn(a,b)-断言a是否在b中,在b中则测试通过

6)最后使用HTMLTestRunner来生成测试报告,分析运行结果

10.在python数据型中,哪些可以切片处理呢?

答:python中符合序列的有序序列都支持切片,例如列表,字符串,元组。

11.如果我要将一个12345678的字符串通过切片倒过来显示输出需要怎么弄?

格式:[start:end:step]

start:起始索引,从0开始

end:结束索引

step:步长,步长为正时,从左向右取值。步长为负时,反向取值

注:切片取值是顾头不顾尾;切片的步长默认为1,不可为0

答: a=’12345678’

print(a[: : -1])

12.有大概统计过自己写个多少个自动化测试脚本吗?

一般是功能测试模块的10%-30%

我们那个项目写的自动化测试脚本写的比较少,我负责的模块写了50个                      

13.深拷贝以浅拷贝

一个对象有对象父级和对象子级中如果嵌套了其他类型

内部元素的type为number、str、tuple(不可变类型)类型的,改变其中的值,浅拷贝和深拷贝始终不变

内部元素的type为list、set、dict(可变类型,改变其中的值,浅拷贝地址值会变,深拷贝地址值不变

浅拷贝只会将父类复制到新的储存空间,子类的地址值使用原对象子类的地址值

深拷贝会将父级和子级全部复制到对应的新的储存空间,与原对象互不影响

14. setup 、teardown怎么用

setup和teardown是用来处理用例的开始前工作和结束后的工作

setup_module;teardown_module;(模块级别的,优先级最高)

最先执行的前置或者后置,且在整个 *.py 文件执行时只执行一次

setup_function;teardown_function;(不在类中)

只对函数用例(不在class里面的)生效,有多少条函数用例执行多少次

setup_class;teardown_class;(类级)

在类中运行的前置或者后置,只运行一次

setup_methond;teardown_methond;(方法级)

在类中每条用例前后运行的前置或后置,每条case分别运行一次

setup     teardown   (在类里面的)

既可以在类中运行,也可以在类外运行,每条用例前后分别执行一次

15.怎么理解装饰器///装饰器的原理

装饰器本身是一个函数\方法,它的入参和返回结果也是一个函数\方法。被标记的方法是装饰器的入参,装饰器会对这个方法进行功能改造返回一个新的方法,最后执行的就是这个新的方法。

16.测试固件(测试夹具)的作用域和使用方法

@pytest.fixture(autouse=True):声明固件时设置

@pytest.fixture(autouse=True):声明测试固件,并在要使用固件的用例中以参数形式传入固件(beanshell)

@pytest.fixture(autouse=True):声明测试固件,并对要使用固件的域用装饰器进行标记

@pytest.mark.usefixtures('beanshell')

function: 函数级,每个测试函数都会执行一次固件;

class: 类级别,每个测试类执行一次,所有方法都可以使用;

module: 模块级,每个模块执行一次,模块内函数和方法都可使用;

session: 会话级,一次测试只执行一次,所有被找到的函数和方法都可用。

17.怎么做数据驱动

就是在测试的时候,我们用的这些测试脚本和测试数据是分离管理的,使用文件存放测试数据(比如我经常使用的是excel),然后封装好一个加载测试数据的方法,在测试脚本中调用该方法获取测试数据,并对需要做数据驱动的测试方法用@pytest.mark.parametrize()(婆ruai母翘以斯)进行装饰,该测试方法就会在测试数据的驱动下重复执行,有多少条测试数据,该测试方法就执行多少次

1.定义:用测试数据驱动测试方法的执行,有多少条测试用例,测试方法就执行多少次

2.对测试方法进行装饰:@pytest.mark.parametrize('data',testdata)

18.最常用的第三方库有哪些

1)xlrd、xlwt    2)pymysql   3)requests   4)pyyaml    5)pytest    6)allure-pytest

19. pytest装饰器

pytest装饰器

跳过不执行  @pytest.mark.skip( )

有条件跳过  @pytest.mark.skipif( )

标记测试方法为失败  @pytest.mark.xfail( )

标记测试用例的执行顺序  @pytest.mark.run(order=3)  需要安装:pip install pytest-ordering

对测试失败的用例进行重试一共重试3次,每次间隔2秒   @pytest.mark.flaky(reruns =3 , reruns_delay=2)

需要安装:pip instal

20.使用pytest生成测试报告

使用pytest生成测试报告

1安装测试报告所使用的第三方库:pip install pytest html

2运行测试用例并生成测试报告:pytest.main(['-vs','./test_pytest_251.py',

'--hum]=../report/result.htmI'])

21.使用allute生产测试报告

使用allute生成测试报告

pytest.main(["--alluredir"/report/allure_ison''_-clean-alluredir''/T)

1    -alluredir:使用allure运行测试用例

2    ./ report/allureison:定义运行结果数据存储的位置(json格式的结果)

3.   -clean-alluredir:每次执行前先清除历史数据

4    ./:运行当前文件所在路径下的所有测试模块

os.system ('allure generate report/ allure_json -o report/allure_report --clean'

- 将json格式的结果数组装成html格式

22.常见的异常

NameError

IndexEttor:下标越

TypeError

ValueError

KeyError

ZeroDivisionError:  被除数为0

异常从高到低  OFF. FATAL. ERROR, WARN, INFO, DEBUG. TRACE, ALL

23.方法与函数的区别

1. 方法是写在类里面的函数,函数是直接写在python模块里面的

 2. 方法只能被类的对象调用,函数可以被导入到其他任意模块,无条件的调用

 3. 方法的第一参数要写self    《赛额复》

 4. 私有方法只能在当前类中被调用,类的对象无法调用

24.继承

一个类继承另一个类的属性和方法,子类的实例可以访问父类的属性和方法

25.方法重写(方法覆盖)

如果从父类继承的方法不能满足子类的需求,可以对其进行改写。这个过程叫方法的覆盖(override)也称之为方法的重写,子类的实例调用该方法时调用的是重写之后的方法,父类的实例调用这个方法时,调用的是原方法,多个父类有同名方法时,继承时写在前面的父类的方法的优先级高

26.xlrd

Path=”../路径“

     file=xlrd.open_ workbook(path) #创建文件对象

     sheets= file.sheet_names0 #茯取该文件的所有sheet,以列表返回

     sheet1=file.sheet_by_index(0)#通过下标选取要读取的sheet

     sheet2=file.sheet_by_name('name')#通过名称选取要读取的sheet

     name = sheet.name #获取sheet的名宇

     nrow=sheet1.nrows #获取当前sheet的总行数

     ncol=sheet1.ncols #获取当前sheet的总列数

     data_row=sheet1.row_values(rowx, start_colx=0,end_colx=None)#读取某一行

     data_col=sheet1.col_values(colx, start_rowx=0, cnd_ rowx=None)#读取某一列

     data_cell= sheet1.cell_value(×, y). value#读取某一个单元格的值

27.pymysql

conn = pymysgl.connect(host,user,password,database)#获取连接对象

     cursor = conn.cursor( )  创建游标

     cursor.execute(sql)      执行sql

     cursor.fetchone( )       获取查询结果的一条数据

     cursor.fetchall( )          获取所有查询结果

     conn.commit( )               提交(增删改之后都妥提交)

     cursor.close( )             关闭游标

     conn .close( )              关闭连接

     conn .rollback( )          发生错误时回滚

先关闭游标,再关闭连接

28.pytest

文件名以test_*.py或*_test.py

类要以Test开头,不能包含_init_方法

以test开头的方法

如果类不以Test开头,类中的方法即使是以test开头也不会执行

运行该模块下所有的测试用的

pytest.main(["./ test pytest_01.py"])#运行指定模块

-s-v-g 命令参数

#运行指定模块,

-V是详细信息模式,输出更详细的执行用例信息

pytest.main(['-s', './ test_ pytest_ 01-Py'])

#运行指定模块,-q是静默模式,只显示运行结果

pytest.main([‘-q','./test_pytest_01.py'])

#运行指定模块,

#-s是显示用例中的打印信息和日志信息

Pytest.main(['-s','./test_pytest_01.py'])

29.测试夹具

fixture概念和作用

1 fixture是pytest 用于在测试前后进行预备、清理工作的代码处理机制。

2fixture优势

fixrure相对于unittest中的setup和teardown来说有以下几点优势:

1. fixure命名更加灵活,局限性比较小;

2. conftest.py 配置里面可以实现数据共享,不需要import就能自动找到一些配置;

3. scope=”session”可以实现多个py跨文件使用一个session来完成多个用例。

Fixture是pytest精髓所在,就像unittest中的setup和teardown一样,但相对之下它的功能更加强大和灵活。

(详解)试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现

2.测试用例的前置条件可以使用fixture实现

3.支持经典的xunit fixture ,像unittest使用的setup和teardown

4.fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,

但是fixture却可以解决这个问题

不需要会)用return返回初始化浏览器,return后面的后置条件不会执行,因此需要将return改成yield,后置条件就会被调用执行。

Yield是Python中的一个关键字,表示生成器。测试夹具的前置条件遇到yield时返回一个结果,然后将测试夹具挂起,

转而去执行测试用例,最后回来测试夹具中执行后置条件。Return和yield后面可以不写任何返回值,

表示空没有数据返回

30.常见的配置文件的格式

yaml文件;.properties文件(扑扑替斯);.ini文件;.json文件;.xml文件

31.sql注入

就是通过把SQL命令插入到Web表单递交或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

防止SQL注入的方法和理念:

1:永远不要信任用户的输入

2:永远不要使用动态拼装SQL

3:不要使用管理员权限

4:密码要加密

32. log是什么,log的级别,log的作用

og是什么:是详细的记录程序运行过程的文件

log的级别:error(爱柔)错误;warn(物嗯)警告; info信息;debug调试

log的作用:方便找到BUG

          Log.v 的调试颜色为黑色的

          Log.d的输出颜色是蓝色的

  Log.i的输出为绿色

Log.w的意思为橙色

 Log.e为红色,可以想到error错误

33. pytest框架下文件、类、方法的命名规范

文件名以test_.py开头

以Test开头的类,不能包含__int__方法

以小写的test开头的方法

如果类不以Test开头的类,即使类里面的方法是test开头也不会执行(默认的是这样,可以自定义更改)

34.最常见的断言

assert   == ;

!= ;   <= ;    >= ; 

is True;    is not True ;

is Flase    ; is not Flase ;

in ;  not in ;

35.用过哪些装饰器(pytest,allure)

Plaintext

@allure.severity('blocker')

@allure.epic(爱呸克)("总描述")

@allure.feature(费切)("测试模块描述")

@allure.story(斯刀锐)("测试描述")

@allure.parent_suite(拍润特,斯锐迟)("上海车进科技信息有限公司-Demo1")

@allure.suite(斯锐迟)('上海车进-注册登录')

@allure.sub_suite('登录')

@allure.description(第斯克瑞斯)("描述内容的意思")

@allure.title(抬头)("用例名称")

@allure.severity(斯歪瑞情)('blocker'):(用例等级)

等级severity_level介绍

   blocker:阻塞缺陷(功能未实现,无法下一步)

   critical:严重缺陷(功能点缺失)

normal:一般缺陷(边界情况,格式错误)

   minor:次要缺陷(界面错误与ui需求不符)

   trivial:轻微缺陷(必须项无提示,或者提示不规范)

36.如何生成测试报告

pytest自带的测试报告不够优美,我们使用allure生成最终的测试报告

37.自动化测试框架的搭建

a.    简历: 基于python + pytest + request + allure 编写接口自动化脚本

b.    安装pytest、request、allure

c.     配置配置文件:log配置文件,环境配置文件、数据库配置文件

d.    封装工具类和方法:http请求的工具类、数据库操作的工具类、测试数据读取的工具类……

e.    对业务中常用的一些操作进行封装

f.     开发测试脚本

g.    组装测试套件(suit),生成allure测试报告

38.python的定位方式?

答:有八种,分别是by.id,by.name,by.class name,by.tag name,by.link text,by.partial link text,by.xpath,by.css selector。我常用的有id,name,class name,link text,xpath。

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

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

相关文章

【C语言】深入理解指针

目录 1.字符指针 2.指针数组 3.数组指针 4.数组传参与指针传参 一维数组传参 二维数组传参 一级指针传参 二级指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针&#xff08;了解即可&#xff09; 8.回调函数 回调函数的应用&#xff1a;库函数qsort …

Adb显示第3方应用的包名原理

Android早期版本实现原理请看 Android源码分析-pm命令的实现&#xff0c;列出包名pm list package&#xff0c;列出系统库pm list libraries_pm list packages-CSDN博客 Android12 对adb shell pm 实现原理做了重构&#xff1a;改成了template模式PackageManagerShellCommand …

【C生万物】数组

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

OJ_浮点数加法(高精度运算)

题干 C实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<map> #include<string> using namespace std;string GetInteger(string a) {return a.substr(0, a.find(.)); }string GetFraction(string a) {return a.substr(a.find(.) 1 ,a.siz…

【webpack】技巧使用

webpack和TypeScript 安装webpack相关内容安装TS相关内容配置初始化数据初始化运行展示和目录展示报错解决&#xff08;缺失文件配置&#xff09; 安装前端必备神奇lodash测试一下entry配置index.html模板配置修改打包出来的index.html的titleinject注入chunks 属性多页面配置 …

2.7日学习打卡----初学RabbitMQ(二)

2.7日学习打卡 JMS 由于MQ产品很多&#xff0c;操作方式各有不同&#xff0c;于是JAVA提供了一套规则 ——JMS&#xff0c;用于操作消息中间件。JMS即Java消息服务 &#xff08;JavaMessage Service&#xff09;应用程序接口&#xff0c;是一个Java平台中关于面 向消息中间件的…

springboot174基于springboot的疾病防控综合系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

vscode wsl远程连接 权限问题

问题描述&#xff1a;执行命令时遇到Operation not permitted 和 Permission denied问题&#xff0c;是有关ip地址和创建文件的权限问题&#xff0c;参考网络上更改wsl.conf文件等方法均无法解决&#xff0c;只能加sudo来解决

【MySQL进阶之路】磁盘随机读写和顺序读写对MySQL性能的影响

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

前后端通讯:前端调用后端接口的五种方式,优劣势和场景

Hi&#xff0c;我是贝格前端工场&#xff0c;专注前端开发8年了&#xff0c;前端始终绕不开的一个话题就是如何和后端交换数据&#xff08;通讯&#xff09;&#xff0c;本文先从最基础的通讯方式讲起。 一、什么是前后端通讯 前后端通讯&#xff08;Frontend-Backend Commun…

解析十六进制雷达数据格式:解析雷达数据长度。

以Cat62格式雷达数据为例&#xff0c;十六进制雷达数据部分代码&#xff1a; 3e0120bf7da4ffee0085 雷达数据长度使用4个字符&#xff08;2个字节&#xff09;标识&#xff0c;在这里是“0120”&#xff0c;转换为十进制数为288。 雷达数据长度父类&#xff1a; base_length_…

python 基础知识点(蓝桥杯python科目个人复习计划35)

今日复习计划&#xff1a;阶段总结&#xff08;新年贺礼&#xff09; 1.python简介&#xff08;定义&#xff0c;优点&#xff0c;缺点&#xff0c;应用领域&#xff09; python&#xff1a;一种广泛使用的解释型&#xff0c;高级和通用的编程语言 python极简&#xff0c;生…

Xray 工具笔记

Xray 官方文档 扫描单个url&#xff08;非爬虫&#xff09; 并输出文件&#xff08;不同文件类型&#xff09; .\xray.exe webscan --url 10.0.0.6:8080 --text-output result.txt --json-output result.json --html-output report.html默认启动所以内置插件 &#xff0c;指定…

前端JavaScript篇之实现call、apply 及 bind 函数

目录 实现call、apply 及 bind 函数1. 实现call函数2. 实现apply函数3. 实现bind函数 实现call、apply 及 bind 函数 call、apply和bind函数都是用于改变函数中this指向的方法。它们的作用都是使函数能够在不同的对象上下文中运行。call方法和apply方法的作用类似&#xff0c;…

多元回归分析:理论与应用

多元回归分析是一种统计方法&#xff0c;用于研究两个或多个自变量&#xff08;解释变量&#xff09;与一个因变量&#xff08;响应变量&#xff09;之间的关系。这种分析允许研究者评估多个因素对结果变量的影响&#xff0c;是社会科学、经济学、生物医学和工程等多个领域中常…

【doghead】uv_loop_t的创建及线程执行

worker测试程序,类似mediasoup对uv的使用,是one loop per thread 。创建一个UVLoop 就可以创建一个uv_loop_t Transport 创建一个: 试验配置创建一个: UvLoop 封装了libuv的uv_loop_t ,作为共享指针提供 对uv_loop_t 创建并初始化

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Toggle组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Toggle组件 组件提供勾选框样式、状态按钮样式及开关样式。 子组件 仅当Toggl…

【MySQL】数据库基础 -- 详解

一、什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 一般的文件确实提供了数据的存储功能&#xff0c;但是文件并没有提供非常好的数据&#xff08;内容&#xff09;的管理能力&#xff08;用户角度&#xff09;。 文件保存数据有以下几个缺点&…

无心剑中译佚名《春回大地》

The Coming of Spring 春回大地 I am coming, little maiden, With the pleasant sunshine laden, With the honey for the bee, With the blossom for the tree. 我来啦&#xff0c;小姑娘 满载着欣悦的阳光 蜂儿有蜜酿 树儿有花绽放 Every little stream is bright, All …

Windows 安装 Linux子系统,并为子系统设置图形化界面

安装WSL 在控制面板中打开下面的选项&#xff1a; 执行下面的命令&#xff0c;更新到WSL2版本&#xff0c;并在以后创建子系统的时候默认采用WSL2的版本&#xff1a; wsl --update wsl --set-default-version 2在Window上安装连接工具&#xff1a; 在Window上下载VcXsrv&…