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

Python自动化之如何利用allure生成测试报告

Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是Java/Python还是Junit/TestNG,其他语言或者框架实现的流程和本文一致,具体配置参照各语言框架规范

安装

安装allure

Windows用户:

  • scoop install allure    (需要先下载并安装Scoop,该方法无需配置环境变量)

MAC用户:

  • 通过Homebrew进行自动安装
  • brew install allure   (如果Homebrew版本比较旧,需要先升级Homebrew,否则安装的allure版本也很老,可能会与Python插件不兼容)

手动安装:

  • 可以从官网 Central Repository: io/qameta/allure/allure-commandline 手动下载
  • 目前最新版本为2.13.6   

下载后解压并配置环境变量

安装allure-pytest插件

  • pip install allure-pytest

allure常用特性

希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息可以使用@feature,@story,@step,@attach

步骤:

  • import allure
  • 功能上加@allure.feature("功能名称")
  • 子功能上加@allure.story("子功能名称")
  • 步骤上加@allure.step("步骤细节")
  • @allure.attach("具体文本信息"),需要附加的信息,可以是数据,文本,图片,视频,网页
  • 如果只测试部分功能运行的时候可以加限制过滤:
    • pytest 文件名 --allure-features "需要运行的功能名称"
allure特性—feature/story

@allure.feature与@allure.store的关系

  • feature相当于一个功能,一个大的模块,将case分类到某个feature中,报告中在behaviore中显示,相当于testsuite
  • story相当于对应这个功能或者模块下的不同场景,分支功能,属于feature之下的结构,报告在features中显示,相当于testcase
  • feature与story类似于父与子关系

step特性

  • 测试过程中每个步骤,一般放在具体逻辑方法中
  • 可以放在关键步骤中,在报告中显示
  • 在app,web自动化测试中,建议每切换到一个新的页面当做一个step
  • 用法:
    • @allure.step() 只能以装饰器的形式放在类或方法上面
    • with allure.step():  可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含

运行:

  在测试执行期间收集结果

  pytest [测试文件] -s -q --alluredir=./result --clean-alluredir

  • --alluredir这个选项,用于指定存储测试结果的路径
  • --clean-alluredir 这个选项用来清除之前生成的结果

查看测试报告:

  方法一:测试完成后查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告

      allure serve ./result

  方法二:从结果生成报告,这是一个启动tomcat的服务,需要两个步骤

      生成报告:

          allure generate ./result -o ./report --clean   (注意:--clean用来清除之前已生成的报告)

      打开报告:

          allure open -h 127.0.0.1 -p 8883 ./report   (该方法直接生成一个tomcat服务,可远程访问)

举个例子:

有如下代码文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

#!/usr/bin/python

# -*- coding: UTF-8 -*-

"""

@author:chenshifeng

@file:test_allure.py

@time:2020/10/10

"""

import allure

import pytest

@allure.feature('登录模块')

class TestLogin():

    @allure.story('登录成功')

    @allure.title('登录成功标题')

    def test_login_sucess(self):

        with allure.step('步骤1:打开应用'):

            print('应用已打开')

        with allure.step('步骤2:进入登录页面'):

            print('登录页面已打开')

        with allure.step('步骤3:输入用户名和密码'):

            print('用户名和密码输入成功')

        print('登录测试用例:登录成功')

    @allure.story('登录成功')

    def test_login_sucess2(self):

        assert '1' == 1

        print('登录测试用例:登录成功')

    @allure.story('登录失败')

    def test_login_failure_a(self):

        print('登录测试用例:登录失败,用户名缺失')

    @allure.story('登录失败')

    def test_login_failure_b(self):

        print('登录测试用例:登录失败,密码缺失')

    @allure.story('登录失败')

    def test_login_failure_c(self):

        with allure.step('输入用户名'):

            print('已输入用户名')

        with allure.step('输入密码'):

            print('已输入密码')

        with allure.step('点击登录'):

            print('已点击登录')

        print('登录测试用例:登录失败,密码错误')

@allure.feature('搜索模块')

class TestSearch():

    def test_search1(self):

        print('搜索用例1')

    TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'

    @allure.testcase(TEST_CASE_LINK,'测试用例连接')

    def test_search2(self):

        print('搜索用例2')

    @allure.step('搜索步骤')

    def test_search3(self):

        print('搜索用例3')

依次执行命令: 

  pytest test_allure.py --alluredir=./result --clean-alluredir

  allure serve ./result

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_allure.py --alluredir=./result --clean-alluredir

============================================================================= test session starts =============================================================================

platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1

rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini

plugins: allure-pytest-2.8.18

collected 8 items                                                                                                                                                            

test_allure.py .F......                                                                                                                                                 [100%]

================================================================================== FAILURES ===================================================================================

________________________________________________________________________ TestLogin.test_login_sucess2 _________________________________________________________________________

self = <test_allure.TestLogin object at 0x7fef3d5cba90>

    @allure.story('登录成功')

    def test_login_sucess2(self):

>       assert '1' == 1

E       AssertionError: assert '1' == 1

test_allure.py:27: AssertionError

=========================================================================== short test summary info ===========================================================================

FAILED test_allure.py::TestLogin::test_login_sucess2 - AssertionError: assert '1' == 1

========================================================================= 1 failed, 7 passed in 0.07s =========================================================================

chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result

Generating report to temp directory...

Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/7024790777193223986/allure-report

Starting web server...

2020-10-13 21:39:56.174:INFO::main: Logging initialized @6818ms to org.eclipse.jetty.util.log.StdErrLog

Server started at <http://192.168.12.100:58977/>. Press <Ctrl+C> to exit

生成的报告:

allure特性-testcase

关联测试用例(可以直接给测试用例的地址链接)

例子:

1

2

3

4

TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'

@allure.testcase(TEST_CASE_LINK,'测试用例连接')

def test_search(self):

    print('搜索用例')

按重要性级别进行一定范围测试

通常测试有P0、冒烟测试、验证上线测试。按重要性级别来执行的,比如上线要把主流程和重要模块都跑一遍,可通过以下方法解决

通过附加@pytest.mark标记

通过allure.feature,allure.story

也可以通过allure.severity来附加标记

  • 级别:
  • trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
  • minor 不太重要,次要缺陷(界面错误与UI需求不符)
  • normal:正常问题,普通缺陷(数值计算错误)
  • critical:严重,临界缺陷(功能点缺失)
  • blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)

使用方法:

   在方法、函数和类上面加 @allure.severity(allure.severity_level.TRIVIAL)

执行:

   pytest -s -v 文件名 --allure-severities normal,critical

举例说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

#!/usr/bin/python

# -*- coding: UTF-8 -*-

"""

@author:chenshifeng

@file:test_severity.py

@time:2020/10/11

"""

import allure

import pytest

# 不加任何标记,默认normal

def test_with_no_severity():

    pass

# trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)

@allure.severity(allure.severity_level.TRIVIAL)

def test_with_trivial_severity():

    pass

# minor 级别 不太重要,次要缺陷(界面错误与UI需求不符)

@allure.severity(allure.severity_level.MINOR)

def test_with_minor_severity():

    pass

# normal:正常问题,普通缺陷(数值计算错误)

@allure.severity(allure.severity_level.NORMAL)

def test_with_normal_severity():

    pass

# critical:严重,临界缺陷(功能点缺失)

@allure.severity(allure.severity_level.CRITICAL)

def test_with_ritical_severity():

    pass

# blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)

@allure.severity(allure.severity_level.BLOCKER)

def test_with_blocker_severity():

    pass

@allure.severity(allure.severity_level.NORMAL)

class TestClassWithNormalSeverity(object):

    # 不加任何标记,默认为同class级别

    def test_inside_with_normal_severity(self):

        pass

    # 重新设置了critical级别

    @allure.severity(allure.severity_level.CRITICAL)

    def test_inside_with_critical_severity(self):

        pass

执行:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_severity.py --alluredir=./result --clean-alluredir -vs

============================================================================= test session starts =============================================================================

platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9

cachedir: .pytest_cache

rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini

plugins: allure-pytest-2.8.18

collected 8 items                                                                                                                                                            

test_severity.py::test_with_no_severity PASSED

test_severity.py::test_with_trivial_severity PASSED

test_severity.py::test_with_minor_severity PASSED

test_severity.py::test_with_normal_severity PASSED

test_severity.py::test_with_ritical_severity PASSED

test_severity.py::test_with_blocker_severity PASSED

test_severity.py::TestClassWithNormalSeverity::test_inside_with_normal_severity PASSED

test_severity.py::TestClassWithNormalSeverity::test_inside_with_critical_severity PASSED

============================================================================== 8 passed in 0.03s ==============================================================================

chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result

Generating report to temp directory...

Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/17788207943997663035/allure-report

Starting web server...

2020-10-13 22:27:49.842:INFO::main: Logging initialized @6620ms to org.eclipse.jetty.util.log.StdErrLog

Server started at <http://192.168.12.100:59696/>. Press <Ctrl+C> to exit

终极用例:

百度搜索:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#!/usr/bin/python

# -*- coding: UTF-8 -*-

"""

@author:chenshifeng

@file:test_baidudemo.py

@time:2020/10/13

"""

import pytest

import allure

from selenium import webdriver

import time

@allure.testcase('https://www.github.com')

@allure.feature("百度搜索")

@pytest.mark.parametrize('test_data1',['allure','pytest','unittest'])

def test_steps_demo(test_data1):

    with allure.step('打开百度网页'):

        driver=webdriver.Chrome()

        driver.get('http://www.baidu.com')

        driver.maximize_window()

    with allure.step(f'输入搜索词:{test_data1}'):

        driver.find_element_by_id('kw').send_keys(test_data1)

        time.sleep(2)

        driver.find_element_by_id('su').click()

        time.sleep(2)

    with allure.step('保存图片'):

        driver.save_screenshot('./screenshot/baidu.png')

        allure.attach.file('./screenshot/baidu.png',attachment_type=allure.attachment_type.PNG)

    with allure.step('关闭浏览器'):

        driver.quit()

执行:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_baidudemo.py --alluredir=./result --clean-alluredir -vs

============================================================================= test session starts =============================================================================

platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9

cachedir: .pytest_cache

rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini

plugins: allure-pytest-2.8.18

collected 3 items                                                                                                                                                            

test_baidudemo.py::test_steps_demo[allure] PASSED

test_baidudemo.py::test_steps_demo[pytest] PASSED

test_baidudemo.py::test_steps_demo[unittest] PASSED

============================================================================= 3 passed in 24.65s ==============================================================================

chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result

Generating report to temp directory...

Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/18005664130273264423/allure-report

Starting web server...

2020-10-13 23:03:39.221:INFO::main: Logging initialized @7360ms to org.eclipse.jetty.util.log.StdErrLog

Server started at <http://192.168.12.100:60775/>. Press <Ctrl+C> to exit

报告:

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关文章:

Python自动化之如何利用allure生成测试报告

Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大&#xff0c;支持多种语言多种测试框架&#xff0c;无论是Java/Pytho…...

【晴问算法】入门篇—贪心算法—区间不相交问题

题目描述 给定n个开区间&#xff0c;从中选择尽可能多的开区间&#xff0c;使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数&#xff0c;表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间&#xff0c;它…...

WPF意外无法启动?try-catch也无法捕捉?0xc0000409?

文章目录 背景尝试原因解决 背景 周六在家加了一会会的班&#xff0c;公司电脑没关机&#xff0c;然后周一上班。。。诡异的事情发生了&#xff0c;在家远程都能运行的程序&#xff0c;突然运行不起来了 尝试 我对WPF程序做了如下尝试&#xff1a; 修改UI框架对OnStartup方…...

微服务day05(中) -- ES索引库操作

索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型&#xff0c;…...

AI智能电销机器人可以做哪些事情呢?智能机器人搭建

随着科技不断发展&#xff0c;选择使用电销智能机器人的行业有很多&#xff0c;因为它的适用性和实用性都非常广&#xff0c;电销智能机器人使用之后能够让企业的整体工作效率变得更加高效&#xff0c;全天候灵活响应也能帮助企业做好业务工作。对于一些还不太了解电销智能机器…...

别踩坑!2024年小红书代写代发机构选择指南!

在小红书平台上&#xff0c;一篇优质的内容往往能迅速吸引用户的关注&#xff0c;为品牌带来不可估量的曝光和转化。然而&#xff0c;对于许多品牌来说&#xff0c;创作高质量的小红书内容并非易事。因此&#xff0c;选择一家专业的小红书代写代发机构成为了不少品牌的明智之选…...

数据出路 -----pandas

Pandas 是 Python 语言的一个扩展程序库&#xff0c;用于数据分析。 Pandas 的主要数据结构是 Series &#xff08;一维数据&#xff09;与 DataFrame&#xff08;二维数据&#xff09;。 数据结构 Series 是一种类似于一维数组的对象&#xff0c;它由一组数据&#xff08;各…...

Win11右键菜单定制

0.优化目标 优化成&#xff1a;右键菜单优化成全量菜单选项&#xff0c;并精简掉我不需要的菜单选项。 具体优化步骤&#xff1a; 1.win11菜单恢复到win10经典状态 win11右键菜单是缩水版的&#xff0c;需要再次点击“显示更多选项”才能找到自己想用到的选项&#xff0c;再…...

将深度图转成2D激光

文章目录 大致过程具体实现运行结果大致过程 将深度图转换为2D激光扫描数据是一个在机器人和自动化领域常见的任务,尤其是在计算资源有限的情况下或当只需要2D数据时。这个过程通常涉及从深度图中选择一个水平切片(或多个切片)并将其转换为距离读数。以下是基本步骤: 确定…...

rust学习笔记(8-12)

8 集合 Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数 据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些 集合指向的数据是储存在堆上的&#xff0c;这…...

JetPack之DataBinding基础使用

目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定&#xff0c;能大大减少绑定app逻辑…...

设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目

概述 在 《设计原则 - 10.实战&#xff1a;针对非业务的通用框架开发&#xff0c;如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中&#xff0c;我们讲解了如何对一个性能计数器框架进行分析、设计与实现&#xff0c;并且实践了一些设计原则和设计思想。当…...

docker入门(八)—— dockerfile详细介绍,编写dockerfile

dockerfile&#xff08;重点&#xff09; 大家想想&#xff0c;Nginx&#xff0c;tomcat&#xff0c;mysql 这些镜像都是哪里来的&#xff1f;官方能写&#xff0c;我们不能写吗&#xff1f; 我们要研究自己如何做一个镜像&#xff0c;而且我们写的微服务项目打包上云部署&am…...

机器学习复习(9)——自定义dataset

目录 第一种dataset(文件夹名即为标签) 用于将格式&#xff08;1&#xff09;转换为格式&#xff08;2&#xff09; 第二种dataset(标签在labels文件夹下的对应的txt文件里面) 第一种dataset(文件夹名即为标签) 数据组织格式&#xff08;1&#xff09; --data ----train …...

【Redis】缓存穿透

问题发生背景&#xff1a;客户端请求的数据再缓存中和数据库中都不存在。 导致的问题&#xff1a;缓存永远不会生效&#xff0c;这些请求都会去请求数据库—导致数据库压力增大。 解决方案&#xff1a; 1.缓存空对象 在Redis中缓存空对象&#xff0c;告诉客户端数据库中没有该值…...

编程出现bug?怎么用Python打印异常

在 Python 编程中&#xff0c;异常是指程序执行过程中出现的错误或异常情况。当程序遇到异常时&#xff0c;为了更好地调试和定位问题&#xff0c;我们需要打印异常信息。本文将详细介绍如何在 Python 中打印异常&#xff0c;并提供一些示例和注意事项。 一、try-except 语句捕…...

P1958 上学路线

题目传送门&#xff1a;P1958 上学路线 一个DFS求迷宫的的题。 详细在代码里&#xff1a; #include <bits/stdc.h>using namespace std; int n,m,a[20][20],t,x,y,ans0; int dx[4]{0,1}; int dy[4]{1,0}; int flag[105][105]{0}; inline void dfs(register int x,regis…...

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

旭日x3派目标跟随小车

目标跟随小车&#xff08;yolov5、安全帽识别&#xff09; 前言最终结果接线实现 前言 上板运行的后处理使用cython封装了&#xff0c;由于每个版本的yolo输出的形状不一样&#xff0c;这里只能用yolov5-6.2这个版本。 ①训练自己的模型并部署于旭日x3派参考&#xff1a; http…...

金潮实业邀您参观2024长三角快递物流展览会

展会介绍 本届展会致力于全面展示快递物流上下游领域的创新解决方案&#xff0c;涵盖快递物流供应链、智能装备、AGV机器人与无人搬运、自动识别、智慧仓储、智慧物流、无人配送、新能物流车及商用车、绿色包装、冷链物流等各个环节&#xff0c;为促进行业合作共融&#xff0c…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中&#xff0c;要设置一个操作在指定延迟后&#xff08;例如3秒&#xff09;执行&#xff0c;可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法&#xff0c;它接受两个参数&#xff1a; 要执行的函数&…...