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

接口自动化 ——fixture allure

一.参数化实现数据驱动

上一篇介绍了参数化,这篇 说说用参数化实现数据驱动。在有很多测试用例的时候,可以将测试用例都存储在文件里,进行读写调用。本篇主要介绍 csv 文件和 json 文件。

1.读取 csv 文件数据

首先创建 csv 文件,将数据 放在csv文件中。然后读取csv 文件的内容,并将读取的 内容返回

import csv# 读取csv 函数
def get_csv_data():list1 = []# 输入存储csv 文件 的目录file = csv.reader(open(r"D:\python_project\API_Auto\API2\data\x_y.csv", encoding="utf-8"))# 输出 csv 文件对象,需要获取文件对象中的内容,使用for 循环进行遍历# print(file)for i in file:# print(i)list1.append(i)else:#  print(list1)return list1

 再在测试用例中进行调用上面的函数,得到返回的参数,作为参数 


import pytestfrom commons.tools import get_csv_data@pytest.mark.parametrize(["x", "y"], get_csv_data())
def test_001(x, y):print(f"x: {x}")print(f"y: {y}")assert x == y

 2.读取json文件数据 

思路还是一样,先 创建json文件,将数据放进去

再读取json文件中的数据,并将 读取后的数据作为返回值

# 读取json 数据
def get_json_data():# json 数据可以直接读取file = open(r"D:\python_project\API_Auto\API2\data\x_y.json", encoding="utf-8")content = file.read()print(content)  # 类型是字符串 “[[1,2],[1,3],[2,3],[5,10],[2,2]]”,有引号不能直接用,需要去掉引号:eval()l = eval(content)# print(l)# print(type(l))  # <class 'list'>return l

在 调用这个方法来得到返回值

# 读取data 目录下的x_y json数据格式的测试用例import pytestfrom commons.tools import get_json_data@pytest.mark.parametrize(["x", "y"], get_json_data())
def test_002(x, y):print(f"x: {x}")print(f"y: {y}")assert x == y

二.fixture

fixture 的主要作用是固定测试环境。在执行用例时,执行 用例之前,执行完用例之后的操作就可以用fixture

1.fixture 创建

定义一个函数,然后加上yield 关键字,再加上pytest 框架装饰器就成了fixture,下面的func,func1都是fixture,func比func1多了一个返回值666

@pytest.fixture()
def func():print("用例执行之前")yield 666print("用例执行之后")@pytest.fixture()
def func1():print("用例执行之前")yield print("用例执行之后")

2.fixture调用

fixture默认是不会自动调用的 ,需要在形参处调用fixture名

# 调用fixture
def test_001(func):print(f"获取fixture:{func}")assert 1 == 1def test_002():assert 1 == 2class TestAAA:# 调用fixturedef test_003(self, func):assert 1 == 1# 获取func 的返回值666print(f"获取fixture:{func}")def test_004(self):assert 1 == 2

输出结果为:

PS D:\python_project\API_Auto\API2> pytest  -k test_z1_fixture定义和使用.py
================================================================= test session starts =================================================================
platform win32 -- Python 3.10.6, pytest-8.3.5, pluggy-1.5.0 -- C:\Users\18481\AppData\Local\Programs\Python\Python310\python.exe
cachedir: .pytest_cache
rootdir: D:\python_project\API_Auto\API2
configfile: pytest.ini
plugins: allure-pytest-2.13.5, result-log-1.2.2
collecting ... [[1,2],[1,3],[2,3],[5,10],[2,2]
]
collected 27 items / 23 deselected / 4 selected                                                                                                        testcases/test_z1_fixture定义和使用.py::test_001 用例执行之前
获取fixture:666
PASSED用例执行之后testcases/test_z1_fixture定义和使用.py::test_002 FAILED
testcases/test_z1_fixture定义和使用.py::TestAAA::test_003 用例执行之前
获取fixture:666
PASSED用例执行之后testcases/test_z1_fixture定义和使用.py::TestAAA::test_004 FAILED====================================================================== FAILURES ======================================================================= 
______________________________________________________________________ test_002 _______________________________________________________________________ def test_002():
>       assert 1 == 2
E       assert 1 == 2testcases\test_z1_fixture定义和使用.py:26: AssertionError
----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
WARNING  pytest_result_log:plugin.py:122 ---------------Start: testcases/test_z1_fixture定义和使用.py::test_002---------------
---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
WARNING  pytest_result_log:plugin.py:128 ----------------End: testcases/test_z1_fixture定义和使用.py::test_002----------------
__________________________________________________________________ TestAAA.test_004 ___________________________________________________________________ self = <testcases.test_z1_fixture定义和使用.TestAAA object at 0x000002AB6C7CA170>def test_004(self):
>       assert 1 == 2
E       assert 1 == 2testcases\test_z1_fixture定义和使用.py:35: AssertionError
----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
WARNING  pytest_result_log:plugin.py:122 ----------Start: testcases/test_z1_fixture定义和使用.py::TestAAA::test_004-----------
---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
WARNING  pytest_result_log:plugin.py:128 -----------End: testcases/test_z1_fixture定义和使用.py::TestAAA::test_004------------
=============================================================== short test summary info =============================================================== 
FAILED testcases/test_z1_fixture定义和使用.py::test_002 - assert 1 == 2
FAILED testcases/test_z1_fixture定义和使用.py::TestAAA::test_004 - assert 1 == 2
===================================================== 2 failed, 2 passed, 23 deselected in 0.19s ======================================================

从结果 可以看到,只有test_001和 test_003调用了fixture.

fixture 默认不会自动调用,但是我们也可以通过参数来让他 自动调用 ,就不需要在往形参里传了。只需要将 对应的参数 autouse 的值修改为 True:

@pytest.fixture(autouse=True)
def func():print("用例执行之前")yield 666print("用例执行之后")
def test_001():assert 1 == 1def test_002():assert 1 == 2class TestAAA:def test_003(self):assert 1 == 1def test_004(self):assert 1 == 2

输出结果 为:

PS D:\python_project\API_Auto\API2> pytest  -k test_z1_fixture定义和使用.py
================================================================= test session starts =================================================================
platform win32 -- Python 3.10.6, pytest-8.3.5, pluggy-1.5.0 -- C:\Users\18481\AppData\Local\Programs\Python\Python310\python.exe
cachedir: .pytest_cache
rootdir: D:\python_project\API_Auto\API2
configfile: pytest.ini
plugins: allure-pytest-2.13.5, result-log-1.2.2
collecting ... [[1,2],[1,3],[2,3],[5,10],[2,2]
]
collected 27 items / 23 deselected / 4 selected                                                                                                        testcases/test_z1_fixture定义和使用.py::test_001 用例执行之前
PASSED用例执行之后testcases/test_z1_fixture定义和使用.py::test_002 用例执行之前
FAILED用例执行之后testcases/test_z1_fixture定义和使用.py::TestAAA::test_003 用例执行之前
PASSED用例执行之后testcases/test_z1_fixture定义和使用.py::TestAAA::test_004 用例执行之前
FAILED用例执行之后====================================================================== FAILURES ======================================================================= 
______________________________________________________________________ test_002 _______________________________________________________________________ def test_002():
>       assert 1 == 2
E       assert 1 == 2testcases\test_z1_fixture定义和使用.py:26: AssertionError
----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
WARNING  pytest_result_log:plugin.py:122 ---------------Start: testcases/test_z1_fixture定义和使用.py::test_002---------------
---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
WARNING  pytest_result_log:plugin.py:128 ----------------End: testcases/test_z1_fixture定义和使用.py::test_002----------------
__________________________________________________________________ TestAAA.test_004 ___________________________________________________________________ self = <testcases.test_z1_fixture定义和使用.TestAAA object at 0x0000017278D0B760>def test_004(self):
>       assert 1 == 2
E       assert 1 == 2testcases\test_z1_fixture定义和使用.py:35: AssertionError
----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
WARNING  pytest_result_log:plugin.py:122 ----------Start: testcases/test_z1_fixture定义和使用.py::TestAAA::test_004-----------
---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
WARNING  pytest_result_log:plugin.py:128 -----------End: testcases/test_z1_fixture定义和使用.py::TestAAA::test_004------------
=============================================================== short test summary info =============================================================== 
FAILED testcases/test_z1_fixture定义和使用.py::test_002 - assert 1 == 2
FAILED testcases/test_z1_fixture定义和使用.py::TestAAA::test_004 - assert 1 == 2
===================================================== 2 failed, 2 passed, 23 deselected in 0.22s ====================================================== 

可以看到,这次没有将fixture名放在形参处,所有的测试用例都调用了fixture

3.fixture作用域

fixture 支持五级作用域

  • function:函数,方法级别(默认)

像上面未设置作用域,就是默认的function级别,在每个函数执行前触发fixture前置,在每个函数执行后触发fixture后置。

  • class:类
    • 当类中第一个用例开始执行之前,会触发fixture前置
    • 当类中最后一个用例开始执行之后,会触发fixture后置
      import pytest@pytest.fixture(scope='class', autouse=True)
      def func():print("用例执行之前")yield 666print("用例执行之后")def test_001():# print(f"获取fixture:{func}")assert 1 == 1def test_002():assert 1 == 2class TestAAA:def test_003(self):assert 1 == 1# print(f"获取fixture:{func}")def test_004(self):assert 1 == 2
      

      执行结果为:

      PS D:\python_project\API_Auto\API2> pytest -k test_z2_fixture的作用域.py
      ================================================================= test session starts =================================================================
      platform win32 -- Python 3.10.6, pytest-8.3.5, pluggy-1.5.0 -- C:\Users\18481\AppData\Local\Programs\Python\Python310\python.exe
      cachedir: .pytest_cache
      rootdir: D:\python_project\API_Auto\API2
      configfile: pytest.ini
      plugins: allure-pytest-2.13.5, result-log-1.2.2
      collecting ... [[1,2],[1,3],[2,3],[5,10],[2,2]
      ]
      collected 27 items / 23 deselected / 4 selected                                                                                                        testcases/test_z2_fixture的作用域.py::test_001 用例执行之前
      PASSED用例执行之后testcases/test_z2_fixture的作用域.py::test_002 用例执行之前
      FAILED用例执行之后testcases/test_z2_fixture的作用域.py::TestAAA::test_003 用例执行之前
      PASSED
      testcases/test_z2_fixture的作用域.py::TestAAA::test_004 FAILED用例执行之后====================================================================== FAILURES =======================================================================
      ______________________________________________________________________ test_002 _______________________________________________________________________ def test_002():
      >       assert 1 == 2
      E       assert 1 == 2testcases\test_z2_fixture的作用域.py:25: AssertionError
      ----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
      WARNING  pytest_result_log:plugin.py:122 ---------------Start: testcases/test_z2_fixture的作用域.py::test_002----------------
      ---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
      WARNING  pytest_result_log:plugin.py:128 ----------------End: testcases/test_z2_fixture的作用域.py::test_002-----------------
      __________________________________________________________________ TestAAA.test_004 ___________________________________________________________________ self = <testcases.test_z2_fixture的作用域.TestAAA object at 0x000001F49CA9A770>def test_004(self):
      >       assert 1 == 2
      E       assert 1 == 2testcases\test_z2_fixture的作用域.py:34: AssertionError
      ----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
      WARNING  pytest_result_log:plugin.py:122 -----------Start: testcases/test_z2_fixture的作用域.py::TestAAA::test_004-----------
      ---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
      WARNING  pytest_result_log:plugin.py:128 ------------End: testcases/test_z2_fixture的作用域.py::TestAAA::test_004------------
      =============================================================== short test summary info =============================================================== 
      FAILED testcases/test_z2_fixture的作用域.py::test_002 - assert 1 == 2
      FAILED testcases/test_z2_fixture的作用域.py::TestAAA::test_004 - assert 1 == 2
      ===================================================== 2 failed, 2 passed, 23 deselected in 0.21s ====================================================== 

可以看到,对于TestAAA这个类,第一个用例开始执行之前,触发了fixture前置,在、最后一个用例执行之后,触发了fixture后置。而不是想之前每个函数都触发了fixture前置和后置

  • module:模块(文件)
    • 当模块中第一个用例开始执行之前,会触发fixture前置
    • 当模块中最后一个用例开始执行之后,会触发fixture后置
      
      import pytest@pytest.fixture(scope='module', autouse=True)
      def func():print("用例执行之前")yield 666print("用例执行之后")def test_001():# print(f"获取fixture:{func}")assert 1 == 1def test_002():assert 1 == 2class TestAAA:def test_003(self):assert 1 == 1# print(f"获取fixture:{func}")def test_004(self):assert 1 == 2
      

      执行结果为:

      PS D:\python_project\API_Auto\API2> pytest -k test_z2_fixture的作用域.py
      ================================================================= test session starts =================================================================
      platform win32 -- Python 3.10.6, pytest-8.3.5, pluggy-1.5.0 -- C:\Users\18481\AppData\Local\Programs\Python\Python310\python.exe
      cachedir: .pytest_cache
      rootdir: D:\python_project\API_Auto\API2
      configfile: pytest.ini
      plugins: allure-pytest-2.13.5, result-log-1.2.2
      collecting ... [[1,2],[1,3],[2,3],[5,10],[2,2]
      ]
      collected 27 items / 23 deselected / 4 selected                                                                                                        testcases/test_z2_fixture的作用域.py::test_001 用例执行之前
      PASSED
      testcases/test_z2_fixture的作用域.py::test_002 FAILED
      testcases/test_z2_fixture的作用域.py::TestAAA::test_003 PASSED
      testcases/test_z2_fixture的作用域.py::TestAAA::test_004 FAILED用例执行之后====================================================================== FAILURES ======================================================================= 
      ______________________________________________________________________ test_002 _______________________________________________________________________ def test_002():
      >       assert 1 == 2
      E       assert 1 == 2testcases\test_z2_fixture的作用域.py:25: AssertionError
      ----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
      WARNING  pytest_result_log:plugin.py:122 ---------------Start: testcases/test_z2_fixture的作用域.py::test_002----------------
      ---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
      WARNING  pytest_result_log:plugin.py:128 ----------------End: testcases/test_z2_fixture的作用域.py::test_002-----------------
      __________________________________________________________________ TestAAA.test_004 ___________________________________________________________________ self = <testcases.test_z2_fixture的作用域.TestAAA object at 0x0000022EF0DEA8C0>def test_004(self):
      >       assert 1 == 2
      E       assert 1 == 2testcases\test_z2_fixture的作用域.py:34: AssertionError
      ----------------------------------------------------------------- Captured log setup ------------------------------------------------------------------ 
      WARNING  pytest_result_log:plugin.py:122 -----------Start: testcases/test_z2_fixture的作用域.py::TestAAA::test_004-----------
      ---------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------- 
      WARNING  pytest_result_log:plugin.py:128 ------------End: testcases/test_z2_fixture的作用域.py::TestAAA::test_004------------
      =============================================================== short test summary info =============================================================== 
      FAILED testcases/test_z2_fixture的作用域.py::test_002 - assert 1 == 2
      FAILED testcases/test_z2_fixture的作用域.py::TestAAA::test_004 - assert 1 == 2
      ===================================================== 2 failed, 2 passed, 23 deselected in 0.21s ====================================================== 

      可以看到,在这个文件的第一个用例执行前触发了fixture前置,最后一个用例执行后触发了fixture后置

  • 以下2种级别只能在conftest.py文件生效(暂不介绍)
    • session:整个项目级别
    • package:包级别

4.fixture结合conftest.py文件使用

conftest.py文件在项目中专门用来管理fixture的文件 模块名字是固定不能修改,而且使用fixture不需要导包,会自动检测

首先创建conftest.py文件 ,在文件中创建fixture

然后 就可以在其他文件中调用fixture,并且不需要导包

# conftest.py 文件下的 fixture 可以 直接使用
def test_001(func1):print("测试用例001")def test_002(func2):print("测试用例002")def test_003(func3):print("测试用例003")

测试结果为 :

PS D:\python_project\API_Auto\API2> pytest -k test_z3_fixture结合conftestpy文件使用.py
================================================================= test session starts =================================================================
platform win32 -- Python 3.10.6, pytest-8.3.5, pluggy-1.5.0 -- C:\Users\18481\AppData\Local\Programs\Python\Python310\python.exe
cachedir: .pytest_cache
rootdir: D:\python_project\API_Auto\API2
configfile: pytest.ini
plugins: allure-pytest-2.13.5, result-log-1.2.2
collecting ... [[1,2],[1,3],[2,3],[5,10],[2,2]
]
collected 27 items / 24 deselected / 3 selected                                                                                                        testcases/test_z3_fixture结合conftestpy文件使用.py::test_001 这是前置条件1
测试用例001
PASSED这是后置条件1testcases/test_z3_fixture结合conftestpy文件使用.py::test_002 这是前置条件2
测试用例002
PASSED这是后置条件2testcases/test_z3_fixture结合conftestpy文件使用.py::test_003 这是前置条件3
测试用例003
PASSED这是后置条件3========================================================== 3 passed, 24 deselected in 0.13s =========================================================== 

三.日志记录Log

记录日志信息主要的作用是,更好的调试监控和排查测试过程中的问题

1.安装日志记录插件

pip install pytest-result-log

2.在pytest.ini配置文件中进行配置

log_file = ./logs/pytest.log
log_file_level = info
log_file_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s]  : %(message)s
log_file_date_format  = %Y-%m-%d %H:%M:%S; 记录用例执行结果
result_log_enable = 1; 记录用例分割线
result_log_separator = 1;分割线等级
result_log_level_separator  = warning;异常信息等级
result_log_level_verbose = info

然后执行 测试用例,就会在目录下生成 logs 目录,打开目录中的文件就可以 查看 log了

WARNING  2025-04-19 18:39:32 [pytest_result_log:122]  : ---------Start: testcases/test_z3_fixture结合conftestpy文件使用.py::test_001----------
INFO     2025-04-19 18:39:32 [pytest_result_log:190]  : test status is PASSED (testcases/test_z3_fixture结合conftestpy文件使用.py::test_001): 
WARNING  2025-04-19 18:39:32 [pytest_result_log:128]  : ----------End: testcases/test_z3_fixture结合conftestpy文件使用.py::test_001-----------
WARNING  2025-04-19 18:39:32 [pytest_result_log:122]  : ---------Start: testcases/test_z3_fixture结合conftestpy文件使用.py::test_002----------
INFO     2025-04-19 18:39:32 [pytest_result_log:190]  : test status is PASSED (testcases/test_z3_fixture结合conftestpy文件使用.py::test_002): 
WARNING  2025-04-19 18:39:32 [pytest_result_log:128]  : ----------End: testcases/test_z3_fixture结合conftestpy文件使用.py::test_002-----------
WARNING  2025-04-19 18:39:32 [pytest_result_log:122]  : ---------Start: testcases/test_z3_fixture结合conftestpy文件使用.py::test_003----------
INFO     2025-04-19 18:39:32 [pytest_result_log:190]  : test status is PASSED (testcases/test_z3_fixture结合conftestpy文件使用.py::test_003): 
WARNING  2025-04-19 18:39:32 [pytest_result_log:128]  : ----------End: testcases/test_z3_fixture结合conftestpy文件使用.py::test_003-----------

四.测试报告 allure

allure报告是一种非常流行的测试报告工具,可以结合多种测试框架集成使用,它提供了一个直观界面,帮助开发人员和测试人员分析测试结果

1.安装 allure

大家可以搜一搜哈,将这个的很多,这里就不多说了。安装完allure后,记得安装第三方 库

pip install allure-pytest

2.使用allure

需要在main.py模块中配置测试报告相关参数

import os
import pytest# 放测试用例的目录
pytest.main(['-sv', r'D:\python_project\API_Auto\API2\testcases', '--clean-alluredir', '--alluredir', './allure_result'])
# 清理旧的测试报告,将allure的测试结果分析生成HTML报告
os.system('allure generate ./allure_result -o ./report --clean')

配置好后右键运行右键main.py模块运行测试用例,然后 找到生成的report目录下的 index.html文件,选一个浏览器打开 就能看到allure报告了

点击 左下角可以切换语言

3.编辑allure

3.1.添加测试步骤

在测试用例上添加 @allure.step(),还可以与参数化之类一起使用

# a.添加测试步骤 @allure.step("test_0001")
@allure.step("test_0001")
@pytest.mark.parametrize(("x", "y"),[[1, 2],[3, 3],[2, 5]]
)
def test_001(x, y):print("AAABBBB")assert x == y

使用后结果为:

3.2.添加测试描述信息

能够给测试用例在报告中记录每一步执行信息

allure.attach()

# b.添加测试描述信息,给测试用例再报告中输出每一步的执行信息 allure.attach()
@allure.step("test_0002")
def test_002():allure.attach("这是002")allure.attach("开始 执行")print("AAABBBB")allure.attach("这是002")allure.attach("执行完毕 ")assert 1 == 1

结果为:

3.3添加严重程度 

bug有不同的严重等级:

  • blocker        阻塞缺陷(功能未实现,无法下一步)
  • critical       严重缺陷(功能点缺失)
  • normal         一般缺陷(边界情况,格式错误,默认bug等级
  • minor          次要缺陷(界面错误与ui需求不符)
  • trivial        轻微缺陷(必须项无提示,或者提示不规范)

可以在报告中 看到,如果没有特别说明,优先级默认都是normal 

@allure.severity(allure.severity_level.CRITICAL)
@allure.severity(allure.severity_level.CRITICAL)
def test_003():print("AAABBBB")assert 1 == 2

测试结果 为

可以看到,优先级变为了设置的 

相关文章:

接口自动化 ——fixture allure

一.参数化实现数据驱动 上一篇介绍了参数化&#xff0c;这篇 说说用参数化实现数据驱动。在有很多测试用例的时候&#xff0c;可以将测试用例都存储在文件里&#xff0c;进行读写调用。本篇主要介绍 csv 文件和 json 文件。 1.读取 csv 文件数据 首先创建 csv 文件&#xff…...

systemctl管理指令

今天我们来继续学习服务管理指令,接下来才是重头戏-systemctl,那么话不多说,直接开始吧. systemctl管理指令 1.基本语法: systemctl [start | stop | restart | status]服务 注&#xff1a;systemctl指令管理的服务在/usr/lib/ systemd/system查看 2.systemctl设置服务的自…...

【文件操作与IO】详细解析文件操作与IO (二)

本篇博客是上一篇文章的续写,重点介绍数据流,还包括三道练习题. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心…...

go-map+sync.map的底层原理

map 哈希冲突解决方式 1.拉链法 2.开放地址法 底层结构 Go 的 map 在源码中由 runtime.hmap 结构体表示&#xff0c;buckets-指向桶数组的指针(常规桶)&#xff0c;oldbuckets-扩容时指向旧桶数组的指针。 type hmap struct {count int // 当前元素个数&#xff08;len…...

java怎么找bug?Arthas原理与实战指南

Arthas原理与实战指南 1. Arthas简介 Arthas是阿里巴巴开源的Java诊断工具&#xff0c;其名字取自《魔兽世界》的人物阿尔萨斯。它面向线上问题定位&#xff0c;被广泛应用于性能分析、定位问题、安全审计等场景。Arthas的核心价值在于它能够在不修改应用代码、不重启Java进程…...

Windows使用SonarQube时启动脚本自动关闭

一、解决的问题 Windows使用SonarQube时启动脚本自动关闭&#xff0c;并发生报错&#xff1a; ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…...

Day53 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* T…...

物联网智慧教室项目(完整版)

物联网智慧教室项目(一)&#xff1a;智慧教室项目解决方案 一、智慧教室项目设计 &#xff08;一&#xff09;环境信息采集控制功能 1、硬件设计 使用STM32开发板模拟灯光控制&#xff0c;报警控制&#xff0c;光照信息采集&#xff1a; 灯光控制通过GPIO控制板载LED报警控…...

替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台

通过云轴科技ZStack Cloud云平台&#xff0c;山西证券打造了敏捷部署、简单运维的云平台&#xff0c;不仅兼容x86、海光、鲲鹏三种异构服务器实现一云多芯&#xff0c;还通过云平台虚拟化纳管模块纳管原有VMware虚拟化资源&#xff0c;并对接第三方集中式存储&#xff0c;在保护…...

计算机网络期中复习笔记(自用)

复习大纲 –第一章 概述 计算机网络的组成 网络边缘&#xff1a;主机和网络应用程序&#xff08;又称为“端系统”&#xff09; 端系统中运行的程序之间的通信方式可划分为两大类&#xff1a; 客户/服务器方式&#xff08;C/S方式&#xff09; 对等方式&#xff08;P2P方式…...

14.Chromium指纹浏览器开发教程之WebGL指纹定制

WebGL指纹概述 当在浏览器打开的网页上浏览内容时&#xff0c;看到的大多是平面的、静态的图像和文字。但是有时想要在网页上看到更加生动、立体的图像&#xff0c;如3D游戏、虚拟现实应用等。这时&#xff0c;就需要用到WebGL。 简单来说&#xff0c;WebGL&#xff08;Web G…...

GitHub SSH连接终极解决方案

GitHub SSH连接终极解决方案&#xff1a;443端口修改多场景故障排查指南 一、问题现象速查 当开发者执行以下命令时出现连接异常&#xff1a; ssh -T gitgithub.com常见报错类型&#xff1a; 经典端口阻塞ssh: connect to host github.com port 22: Connection refused密钥验…...

Git 中修改某个特定的commit提交内容

在 Git 中修改某个特定的提交&#xff08;commit&#xff09;通常需要使用 交互式变基&#xff08;Interactive Rebase&#xff09; 或 修改提交&#xff08;Commit Amend&#xff09;。以下是不同场景下的具体操作步骤&#xff1a; 一、修改最近的提交&#xff08;最新提交&am…...

每日算法【双指针算法】(Day 1-移动零)

双指针算法 1.算法题目&#xff08;移动零&#xff09;2.讲解算法原理3.编写代码 1.算法题目&#xff08;移动零&#xff09; 2.讲解算法原理 数组划分&#xff0c;数组分块&#xff08;快排里面最核心的一步&#xff09;只需把0改为tmp 双指针算法&#xff1a;利用数组下标来…...

B端管理系统:企业运营的智慧大脑,精准指挥

B端管理系统的定义与核心功能 B端管理系统&#xff08;Business Management System&#xff09;是专门设计用于支持企业内部运作和外部业务交互的一套软件工具。它集成了多种功能模块&#xff0c;包括但不限于客户关系管理(CRM)、供应链管理(SCM)、人力资源管理(HRM)以及财务管…...

使用Java基于Geotools的SLD文件编程式创建与磁盘生成实战

前言 在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地图的可视化呈现至关重要&#xff0c;而样式定义语言&#xff08;SLD&#xff09;文件为地图元素的样式配置提供了强大的支持。SLD 能够精确地定义地图图层中各类要素&#xff08;如点、线、面、文本等&#x…...

Git 命令速查手册

听说用美图可以钓读者&#xff1f; 一、基础操作核心命令 1. 仓库初始化与克隆 命令作用示例git init创建新仓库git init my-projectgit clone克隆远程仓库git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add关联远程仓库git re…...

PKI 公钥基础设施

PKI 的全称是公钥基础设施&#xff08;Public Key Infrastructure&#xff09;&#xff0c;是一个基于公钥加密技术&#xff0c;为网络环境中的各种应用提供安全服务的基础设施&#xff0c;由多个部分组成&#xff0c;各部分协同工作以实现数字证书的管理、密钥的生成与管理以及…...

android测试硬件工具 安卓硬件测试命令

Android开发常用ADB命令大全 在Android开发过程中&#xff0c;ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具&#xff0c;你会发现它已经集成了很多ADB功能&#xff0c;让调试变得…...

网络编程 - 4 ( TCP )

目录 TCP 流套接字编程 API 介绍 SeverSocket Socket 用 TCP 实现一个回显服务器 服务端 客户端 运行调试 第一个问题&#xff1a;PrintWriter 内置的缓冲区 - flush 刷新解决 第二个问题&#xff1a;上述代码中&#xff0c;需要进行 close 操作吗&#xff1f; 第三…...

OSPF综合实验(HCIP)

1&#xff0c;R5为ISP&#xff0c;其上只能配置Ip地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过ppp协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 3&#xff0c;所有设备均可访问R5的环回&…...

真实波幅策略思路

该策略是一种基于ATR&#xff08;Average True Range&#xff09;指标的交易策略&#xff0c;主要用于期货市场中的日内交易。策略的核心思想是利用ATR指标来识别市场的波动范围&#xff0c;并结合均线过滤来确定买入和卖出的时机。 交易逻辑思维 1. 数据准备与初始化 - 集合竞…...

ESB —— 企业集成架构的基石:功能、架构与应用全解析

企业服务总线&#xff08;Enterprise Service Bus&#xff0c;ESB&#xff09;是一种重要的企业级集成架构&#xff0c;以下为你详细介绍&#xff1a; 一、概念与定义 ESB 是一种基于面向服务架构&#xff08;SOA&#xff09;的中间件技术&#xff0c;它充当了企业内部不同应…...

leetcode 674. Longest Continuous Increasing Subsequence

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析明确并理解递推公式 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这是动态规划解决子序列问题的例子。与第300题的唯一区别就是&#…...

STM32 外部中断EXTI

目录 外部中断基础知识 STM32外部中断框架 STM32外部中断机制框架 复用功能 重映射 中断嵌套控制器NVIC 外部中断按键控制LED灯 外部中断基础知识 STM32外部中断框架 中断的概念&#xff1a;在主程序运行过程中&#xff0c;出现了特点的中断触发条件&#xff0c;使得…...

Linux:基础IO---动静态库

文章目录 1. 动静态库前置知识1.1 动静态库知识回顾1.2 什么是动静态库 2. 动静态库2.1 站在库的制作者的角度2.2 站在库的使用者的角度2.3 动态库是怎么被加载的&#xff08;原理&#xff09; 序&#xff1a;上一篇文章我们从认识到理解&#xff0c;从理解到实现场景&#xff…...

深度学习-torch,全连接神经网路

3. 数据集加载案例 通过一些数据集的加载案例&#xff0c;真正了解数据类及数据加载器。 3.1 加载csv数据集 代码参考如下 import torch from torch.utils.data import Dataset, DataLoader import pandas as pd ​ ​ class MyCsvDataset(Dataset):def __init__(self, fil…...

SQL注入相关知识

一、布尔盲注 1、布尔盲简介 布尔盲注是一种SQL注入攻击技术&#xff0c;用于在无法直接获取数据库查询结果的情况下&#xff0c;通过页面的响应来判断注入语句的真假&#xff0c;从而获取数据库中的敏感信息 2、布尔盲注工作原理 布尔盲注的核心在于利用SQL语句的布尔逻辑…...

Codex CLI - 自然语言命令行界面

本文翻译整理自&#xff1a;https://github.com/microsoft/Codex-CLI 文章目录 一、关于 Codex CLI相关链接资源 二、安装系统要求安装步骤 三、基本使用1、基础操作2、多轮模式 四、命令参考五、提示工程与上下文文件自定义上下文 六、故障排查七、FAQ如何查询可用OpenAI引擎&…...

实现窗口函数

java 实现窗口函数 public class SlidingWin {public static void main(String[] args) {SlidingWin slidingWin new SlidingWin();double v slidingWin.SlidWin(2);System.out.println(v);}public double SlidWin(int k){int [] array new int[]{2,4,5,6,9,10,12,23,1,3,8…...