pytest测试框架——allure报告

news2024/11/18 5:53:15

在这里插入图片描述


文章目录

  • 一、allure的介绍
  • 二、allure的运行方式
  • 三、allure报告的生成
    • 方式一、在线报告、会直接打开默认浏览器展示当前报告
    • 方式二、静态资源文件报告(带index.html、css、js等文件),需要将报告布置到web服务器上。
  • 四、allure中装饰器
    • 1、实现给测试报告添加用例标题
    • a.直接使用@allure.title为测试用例自定义标题。
    • b.@allure.title支持通过占位符的方式传递参数,可以实现测试用例标题参数化,动态生成测试用例标题。
    • c.allure.dynamic.title动态更新测试用例标题。
    • 2、allure报告中添加用例步骤
      • 方法一:使用装饰器定义一个测试步骤,在测试用例中使用。
      • 方法二:使用with allure.step()添加测试步骤。
    • 3、allure报告中添加用例链接
    • 4、allure报告中添加用例分类
      • 总结
    • 5、allure报告中添加用例描述
    • 6、allure报告中添加用例优先级
    • 7、allure报告中添加用例支持tags标签
    • 8、allure报告中添加pytest.fixture
  • 五、失败用例重试功能
  • 六、allure报告中添加附件
    • 1、添加图片
    • 2、添加日志
    • 3、添加html
    • 4、添加视频
  • 七、定制allure报告
    • 1、修改页面的logo

一、allure的介绍

Allure 是由Java 语言开发的一个轻量级,灵活的测试报告工具。
Allure多平台的 Report框架。
Allure 支持多语言,包括 python、JaveScript、PHP、Ruby 等。
可以为开发/测试/管理等人员提供详尽的的测试报告,包括测试类别、测试步骤、日志、图片、视
频等。
可以为管理层提供高水准的统计报告。
可以集成到Jenkins生成在线的趋势汇总报告。

二、allure的运行方式

收集结果:

pytest 测试模块/测试包/测试用例 --alluredir = 指定存储测试结果的路径

pytest --alluredir=./reports --clean-alluredir

生成在线的测试报告:
allure serve ./results

安装allure-pytest

三、allure报告的生成

方式一、在线报告、会直接打开默认浏览器展示当前报告

--clean-alluredir:清理已经生成的报告的历史记录

1、pytest 测试模块/测试包/测试用例 --alluredir = 指定存储测试结果的路径
2、生成在线的测试报告:
allure serve ./results

方式二、静态资源文件报告(带index.html、css、js等文件),需要将报告布置到web服务器上。

应用场景:如果希望随时打开报告,可以生成一个静态资源文件报告,将这个报告布署到web服务器上,启动web服务,即可随时随地打开报告。
解决方案:使用allure generate 生成带有 index.html 的结果报告。这种方式需要
两个步骤:
第一步:生成报告。

--clean:如果报告路径重复,清理上一次的报告

allure generate ./results --clean

-o:将测试报告生成指定的目录

allure generate ./results --clean -o ./reports

第二步:打开报告。

allure open allure-report

打开报告指定IP地址和端口号

-h 127.0.0.1 -p 8888

allure open ./reports -h 127.0.0.1 -p 8888

四、allure中装饰器

@allure.epic() epic描述 敏捷里面的概念,定义史诗,往下是feature
@allure.feature() 模块名称 功能点的描述,往下是 story
@allure.story() 用户故事 用户故事,往下是title
@allure.title(用例的标题)用例的标题 重命名 html 报告名称
@allure.step() 操作步骤 测试用例的步骤
@allure.testcase() 测试用例的链接地址对应功能测试用例系统里面的case
@allure.issue() 缺陷 对应缺陷管理系统里面的链接
@allure.description() 用例描述 测试用例的描述
@allure.severity() 用例等级 blocker, critical, normal, minor, trivial
@allure.link() 链接 定义一个链接,在测试报告展现
@allure.attachment() 附件 报告添加附件

1、实现给测试报告添加用例标题

通过使用装饰器@allure.title可以为测试用例自定义一个可阅读性的标题。
allure.title的三种使用方式:

a.直接使用@allure.title为测试用例自定义标题。

import allure

@allure.title('测试标题')
def test_with_title():
    assert True

b.@allure.title支持通过占位符的方式传递参数,可以实现测试用例标题参数化,动态生成测试用例标题。

@allure.title("参数化用例标题:参数1:{p1},参数2:{p2}")
@pytest.mark.parametrize('p1,p2,p3',[[1,1,2],[2,4,6]])
def test_with_title1(p1,p2,p3):
    assert p1+p2==p3

在这里插入图片描述

c.allure.dynamic.title动态更新测试用例标题。

@allure.title('原始标题')
def test_with_title2():
    assert True
    allure.dynamic.title('更改后的标题')

2、allure报告中添加用例步骤

应用场景:编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。

方法一:使用装饰器定义一个测试步骤,在测试用例中使用。

import allure
import pytest




@allure.step
def simple_step1(step_param1,step_param2=None):
    """定义一个测试步骤"""
    print(f'步骤1:打开页面,参数1:{step_param1},参数2:{step_param2}')


@allure.step
def simple_step2(step_param):
    """定义一个测试步骤"""
    print(f'步骤1:完成搜索{step_param}功能')


@pytest.mark.parametrize('param1',['pytest','allure'],ids=['search pytest','search pytest'])
def test_parameterize_with_id(param1):
    simple_step2(param1)

@pytest.mark.parametrize('param1',[True, False])
@pytest.mark.parametrize('param2', ['value 1', 'value 2'])
def test_parametrize_with_two_parameters(param1, param2):
    simple_step1(param1,param2)

@pytest.mark.parametrize('param2',['pytest', 'unittest'])
@pytest.mark.parametrize('param1,param3', [[1,2]])
def test_parameterize_with_uneven_value_sets(param1, param2, param3):
    simple_step1(param1,param3)
    simple_step2(param2)

方法二:使用with allure.step()添加测试步骤。

@allure.title("搜索用例:{searchkey}")
@pytest.mark.parametrize("searchkey",['java','allure'])
def test_step_in_method(searchkey):
    with allure.step("测试步骤一:打开页面"):
        print("操作a")
        print("操作b")
    with allure.step(f"测试步骤二:搜索{searchkey}"):
        print(f"搜索操作{searchkey}")
    with allure.step("测试步骤三:断言"):
        assert True

在这里插入图片描述

3、allure报告中添加用例链接

应用场景:将报告与bug管理系统或测试用例管理系统集成,可以添加链接装饰器
allure. link、@allure.issue和allure.testcase。

格式1: @allure.link (url, name)添加一个普通的link链接,name:起别名

import allure


@allure.link('http://www.baidu.com',name='这是一个链接')
def test_with_link():
    pass

在这里插入图片描述

格式2: allure.testcase( url,name)添加一个用例管理系统链接。

TEST_CASE_LINK='http://www.baidu.com'

@allure.testcase(TEST_CASE_LINK,'用例管理系统')
def test_with_testcase():
    pass

在这里插入图片描述

格式3: @allure.issue(url,name),添加bug管理系统链接。

@allure.issue('66666','bug管理系统')
def test_with_issue():
    pass

4、allure报告中添加用例分类

应用场景:可以为项目,以及项目下的不同模块对用例进行分类管理。也可以运行某个类别下的用例。
报告展示:类别会展示在测试报告的Behaviors栏目下。
Allure提供了三个装饰器:
@allure.epic:敏捷里面的概念,定义史诗,往下是feature。

import allure

@allure.epic('需求1')
class TestEpic:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')


@allure.epic('需求1')
class TestEpic1:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')

在这里插入图片描述
场景:希望在报告中看到测试功能,子功能或场景。
子功能上加@allure.story、@allure.feature

@allure.feature:功能点的描述,理解成模块往下是story。
@allure.story:故事story是 feature的子集。

import allure

@allure.epic('需求1')
@allure.feature('功能模块1')
class TestEpic:

    @allure.story('子功能1')
    @allure.title('用例1')
    def test_case1(self):
        print('用例1')

    @allure.story('子功能2')
    @allure.title('用例2')
    def test_case2(self):
        print('用例2')

    @allure.story('子功能2')
    @allure.title('用例3')
    def test_case3(self):
        print('用例3')

    @allure.story('子功能1')
    @allure.title('用例4')
    def test_case4(self):
        print('用例4')

    @allure.story('子功能3')
    @allure.title('用例5')
    def test_case5(self):
        print('用例5')


@allure.epic('需求1')
@allure.feature('功能模块2')
class TestEpic1:

    @allure.story('子功能4')
    def test_case1(self):
        print('用例1')

    @allure.story('子功能5')
    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')



@allure.epic('需求2')
@allure.feature('功能模块1')
class TestEpic2:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')

在这里插入图片描述

运行特定类别的用例

1、只运行epic名为”需求1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-epics=需求1

在这里插入图片描述

2、只运行feature名为”功能模块2“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-features=功能模块2

在这里插入图片描述

3、只运行story名为”子功能1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能1

4、只运行story名为”子功能2“和”子功能2“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能2,子功能3 -vs

5、运行story名为”子功能2“和 feature名”功能模块1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能2 --allure-features=功能模块1

在这里插入图片描述

总结

epic:相当于定义一个项目。
feature:相当于一个功能模块,相当于testsuite,可以管理很多个子分支story
story:相当于对应这个功能或者模块下的不同场景,分支功能。
epic 与feature、feature 与story类似于父子关系。

5、allure报告中添加用例描述

应用场景:Allure支持往测试报告中对测试用例添加非常详细的描述语,用来描述测试用例详情。
Allure添加描述的四种方式:
方式一:使用装饰器
@allure.description()传递一个字符串参数来描述测试用例。

import allure

@allure.description("""
多行描述信息:<br/>
通过传递字符串参数添加一段描述语句,</br>
使用装饰器@allure.description
""")
def test_description_string():
    assert True

在这里插入图片描述

方式二:使用装饰器
@allure.description_ html传递一段HTML文本来描述测试用例。

@allure.description_html("""
<img class="index-logo-src" src="//www.baidu.com/img/flexible/logo/pc/result.png" alt="到百度首页" title="到百度首页">
""")
def test_description_html():
    assert True

在这里插入图片描述

方式三:直接在测试用例方法中通过编写文档注释的方法来添加描述。会按照给定的格式展示,不需要添加<br/>

def test_description_desc():
    """
    直接写在测试用例中
    通过编写文档注释的方法
    来添加描述
    会按照给定的格式展示,不需要添加<br/>
    :return:
    """
    assert True

在这里插入图片描述

6、allure报告中添加用例优先级

应用场景:用例执行时,希望按照严重级别执行测试用例。

解决:可以为每个用例添加一个等级的装饰器,用法: allure.severity。

Allure对严重级别的定义分为5个级别:

Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)。
Critical级别:临界缺陷(功能点缺失)。
Normal级别:普通缺陷(数值计算错误)。
Minor级别:次要缺陷(界面错误与UI需求不符)。
Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)。

使用装饰器添加用例方法/类的级别。
类上添加的级别,对类中没有添加级别的方法生效。

未加级别标签的用例,在运行时,是不会被收集上来的
但是在类中没有加标签,会随着类上加的标签来收集的

import allure

未加级别标签的用例,在运行时,是不会被收集上来的
def test_with_no_serverity_label():
    pass

@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_serverity():
    pass

@allure.severity(allure.severity_level.NORMAL)
def test_with_trivial_serverity1():
    pass

在这里插入图片描述
对某一级别的用例运行时添加命令行参数–allure-severities:

pytest test_allure_severity.py --alluredir=./reports --clean-al
luredir --allure-severities=trivial

7、allure报告中添加用例支持tags标签

Allure报告支持的一些常见Pytest特性包括xfail、
skipif、fixture等。测试结果会展示特定的标识在用例详情页面。

8、allure报告中添加pytest.fixture

应用场景:fixture和finalizer是分别在测试开始之前和测试结束之后由Pytest调用的实用程序函数。Allure跟踪每个fixture的调用,并详细显示调用了哪些方法以及哪些参数,从而保持了调用的正确顺序。

import allure
import pytest

@pytest.fixture()
def func():
    print('前置操作')
    yield
    print('后置操作')

class TestDemo:

    def test_a(self,func):
        assert True

    def test_b(self):
        pass

在这里插入图片描述

五、失败用例重试功能

Allure可以收集用例运行期间,重试的用例的结果,以及这段时间重试的历史记录。

安装:
pip install pytest-rerunfailures

import pytest
import allure


@pytest.mark.flaky(reruns=2,reruns_delay=2)
class TestDemo:

    def test_a(self):
        assert True

    def test_b(self):
        assert False

在这里插入图片描述
在这里插入图片描述

六、allure报告中添加附件

1、添加图片

应用场景:在做UI自动化测试时,可以将页面截图,或者出错的页面进行截图,将截图添加到测试报告中展示,辅助定位问题。

解决方案:使用allure.attach或者allure.attach.file()添加图片。

语法:allure.attach.file( source,name, attachment_type,extension)
参数解释:
source:文件路径,相当于传一个文件。
name:附件名字。
attachment_type:附件类型,是
allure.attachment_type其中的一种(支持PNG、JPG、BMP、GIF等)。
extension:附件的扩展名。

案例1

import pytest
import allure


class TestWithAttach:

    def test_pic(self):


        allure.attach.file(source="./1.jpeg",
                           name='图片',
                           attachment_type=allure.attachment_type.PNG,
                           extension="jpeg")

在这里插入图片描述

案例2

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/2/20 18:46
# @Author  : 杜兰特
# @File    : test_allure_pic.py

import pytest
import allure


class TestWithAttach:

    def test_pic(self):


        allure.attach.file(source="./1.jpeg",
                           name='图片',
                           attachment_type=allure.attachment_type.PNG,
                           extension="jpeg")


    def test_pic1(self):
        with open('./1.jpeg',mode='rb') as f:
            file=f.read()
            print(file)
            allure.attach(file,name='页面截图',attachment_type=allure.attachment_type.PNG)

在这里插入图片描述

2、添加日志

应用场景:报告中添加详细的日志信息,有助于分析定位问题。
解决方案:使用python自带的logging模块生成日志,日志会自动添加到测试报告中。

import allure

from utils.log_util import logger


@allure.epic("需求1")
@allure.feature("功能模块一")
class TestEpic:
    @allure.story("子功能一")
    @allure.title("用例1")
    def test_case1(self):
        logger.info("这是 TestEpic 第一条用例")
        print("用例1")

    @allure.story("子功能二")
    @allure.title("用例2")
    def test_case2(self):
        logger.debug("这是 TestEpic 第二条用例")
        print("用例2")

    @allure.story("子功能二")
    @allure.title("用例3")
    def test_case3(self):
        logger.warning("这是 TestEpic 第三条用例")
        print("用例3")

    @allure.story("子功能一")
    @allure.title("用例4")
    def test_case4(self):
        logger.error("这是 TestEpic 第四条用例")
        print("用例4")

    @allure.story("子功能三")
    @allure.title("用例5")
    def test_case5(self):
        print("用例5")

@allure.epic("需求1")
@allure.feature("功能模块二")
class TestEpic1:
    @allure.story("子功能四")
    def test_case1(self):
        print("用例1")

    @allure.story("子功能五")
    def test_case2(self):
        print("用例2")

    def test_case3(self):
        print("用例3")


@allure.epic("需求2")
class TestEpic2:
    def test_case1(self):
        print("用例1")

    def test_case2(self):
        print("用例2")

    def test_case3(self):
        print("用例3")

在这里插入图片描述

3、添加html

应用场景:可以定制测试报告页面效果,可以将HTML类型的附件显示在报告页面上。
解决方案:使用allure.attach()添加html代码。

语法:
allure.attach (body ,name,attachment_type,extension),参数解释:
body:要写入附件的内容(HTML代码块)。
name:附件名字。
attachment_type:附件类型,是allure.attachment_type其中的一种。
extension:附件的扩展名。

import allure
from utils.log_util import logger

class TestAllureHTML:

    def test_html(self):
        logger.info('测试日志')
        allure.attach(body="""
        <img class="index-logo-src" src="//www.baidu.com/img/flexible/logo/pc/result.png" alt="到百度首页" title="到百度首页">
        """,
                      name='添加html',
                      attachment_type=allure.attachment_type.HTML,
                      extension='html')

在这里插入图片描述

4、添加视频

应用场景:在做UI自动化测试时,可以将页面截图,或者出错的页面进行截图,将截图添加到测试报告中展示,辅助定位问题。
解决方案:使用allure.attach. file()添加视频。

语法:
allure.attach (body ,name,attachment_type,extension),参数解释:
body:要写入附件的内容(HTML代码块)。
name:附件名字。
attachment_type:附件类型,是allure.attachment_type其中的一种。
extension:附件的扩展名。

import allure

class TestWithAttach:

    def test_video(self):
        allure.attach.file("xxx.mp4",
                           name='视频资源',
                           attachment_type=allure.attachment_type.MP4,
                           extension='mp4')

七、定制allure报告

应用场景:针对不同的项目可能需要对测试报告展示的效果进行定制,比如修改页面的logo、修改项目的标题或者添加一些定制的功能等等。

1、修改页面的logo

1.修改allure.yml文件,添加logo插件custom-logo-plugin(在allure安装路径下,可以通过where allure或者which allure查看allure安装路径))。
2.编辑styles.css文件,配置logo图片。

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

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

相关文章

【LeetCode每日一题:982. 按位与为零的三元组+从递归超时到记忆化搜索】

题目描述 给你一个整数数组 nums &#xff0c;返回其中 按位与三元组 的数目。 按位与三元组 是由下标 (i, j, k) 组成的三元组&#xff0c;并满足下述全部条件&#xff1a; 0 < i < nums.length 0 < j < nums.length 0 < k < nums.length nums[i] & …

Common API环境部署(保姆级教程,填充了很多坑)

Common API环境部署目录一、前言及结果展示二、Windows下安装docker1. 准备工作[1.1 Docker安装包](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe)[1.2 Wsl2安装包](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.ms…

【数据结构】链式二叉树

前言 在前面我们学习了一些二叉树的基本知识&#xff0c;了解了它的结构以及一些性质&#xff0c;我们还用数组来模拟二叉树建立了堆&#xff0c;并学习了堆排序&#xff0c;可是数组结构的二叉树有很大的局限性&#xff0c;平常我们用的最多树结构的还是链式二叉树&#xff0c…

【自律】学习方案

自律来源 轶事 陆奇以精力旺盛著称&#xff0c;通常凌晨4点起床&#xff0c;先查邮件&#xff0c;然后在跑步机上跑4英里&#xff0c;边跑边听古典音乐或看新闻。早上5点至6点至办公室&#xff0c;利用这段时间不受别人干扰准备一天的工作&#xff0c;然后一直工作到晚上10点&a…

搜索引擎的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;随着互联网的快速发展&#xff0c;网络上的数据也随着爆炸式地增长。如何最快速筛选出对我们有用的信息成了主要问题。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息&#xff0c;在对信息进行组织和处理后&…

ks通过恶意低绩效来变相裁员(五)绩效申诉就是「小六自证吃了一碗凉粉」

目录 一、小六吃了一碗凉粉 二、给你差绩效 公司告诉你可以绩效申诉 1、公司的实际目的是啥 2、你一旦自证&#xff0c;就掉入了陷阱 三、谁主张谁举证——让公司证明它绩效考核的客观性和公平性 四、针对公司的流氓恶意绩效行为&#xff0c;还有其他招吗 五、当公司用各…

学习方法--找书,背书,利器

学习方法 前言&#xff1a; 1、所谓的技术/技能&#xff0c;可比作对一类书的学习&#xff0c;那么第一步&#xff0c;就是要找这方面的书本来学习&#xff0c;简称为“找书”&#xff0c;找书既是指资料&#xff0c;也是指经验总结等等&#xff0c;第二步&#xff0c;就是背下…

【基础算法】双指针---数组元素的目标和

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

CSS 基础:选择器、盒模型、布局

CSS&#xff08;Cascading Style Sheets&#xff09;是用于定义 HTML 或 XML 文档中的样式的一种语言。它可以控制网页的排版、字体、颜色、背景等多个方面&#xff0c;从而使网页呈现出美观的视觉效果和良好的用户体验。其中&#xff0c;选择器、盒模型和布局是 CSS 基础中的三…

Pod控制器

一.Pod控制器及其功用Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启策略无效&#…

C. Zero Path

给你一个矩阵&#xff0c;矩阵中每个点是1或者-1&#xff0c;问你是否存在一条路径从左上角到右下角路径上所经过点的总和是0。 类似于数字三角型&#xff0c;dp[i][j]可以用dp[i-1][j]的位置 和 dp[i][j-1]的位置传递过来&#xff0c;我们可以保存每个位置可以达成的和的所有可…

ROS小车研究笔记3/4/2023:自动导航launch文件解析

对于ROS小车导航算法基本原理和使用方法&#xff0c;可以看笔记http://t.csdn.cn/NUWHt 1 启动小车导航节点&#xff1a;turn_on_wheeltec_robot navigation.launch <launch><!-- 开启机器人底层相关节点 同时开启导航功能--><include file"$(find turn_on…

P6专题:如何通过P6 Professional创建及管理 EPS

目录 引言 创建EPS 引言 牢记P6数据结构&#xff0c;这是P6编制计划的层次&#xff1a;EPS-项目-WBS-作业。 EPS&#xff08;Enterprise Breakdown Structure&#xff09;&#xff1a;企业项目结构&#xff0c;用于组织项目&#xff0c;并进行数据汇总。EPS 代表 Primavera…

XFI和SFI的差异

目录 相同/相似点 应用参考模型 Trace Length 不同点 眼图模板 B点处的眼图模板对比 C点处的眼图模板对比 通道损耗 CDR支持 预加重和均衡 DC特性 RETIMER的用法 通过研究INF-8077i 10 Gigabit Small Form Factor Pluggable Module规范和SFF-8431 Specifications for …

【STM32】入门(十四):FreeRTOS-任务

1、简述 FreeRTOS应用程序由一组独立的任务构成。 在任何时间点&#xff0c;应用程序中只能执行一个任务&#xff0c;FreeRTOS调度器负责决定所要执行的任务。 每个任务在自己的上下文中执行&#xff0c;不依赖于系统内的其他任务或 FreeRTOS的调度器本身。 FreeRTOS调度器负责…

51单片机IIC时序详细分析并驱动EEPROM存储方案应用------day9

51单片机IIC驱动EEPROM存储方案应用------day9 1.常见存储器件&#xff1a; 铁电&#xff0c; E2PROM&#xff0c; FLASH。 共同特点&#xff1a; 掉电后数据不丢失 各自特点&#xff1a; 铁电&#xff1a; 理论上可以无限次擦写&#xff0c; 操作简单&#xff0c; 但是容量小。…

进销存管理系统

技术&#xff1a;Java等摘要&#xff1a;进销存管理系统是为了实现企业仓库商品管理的系统化、规范化和自动化&#xff0c;从而提高企业管理效率而设计开发的管理信息系统。它完全取代了过去一直用人工管理的工作方式&#xff0c;避免了由于管理人员手工操作上的疏忽以及管理质…

【Linux】基本系统维护命令

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享C/C相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…

P6专题:P6模块/组件简要介绍(P6,Professional,API,TeamMember,WebService)

目录 一 引言 二 P6组件 P6 P6 Professional Team Member PC Team Member App Integration API WebService 一 引言 Oracle Primavera P6 EPPM 是基于“角色”设计的企业级项目管理专业软件&#xff0c;包含了如下几个组件/模块&#xff0c;解决不同维度的问题&#x…

linux入门---shell感性认识

命令行解释器 我们目前学了很多的指令&#xff0c;并且这些指令在磁盘上都是以文件的形式存在的&#xff1a; 通过file可以查看这些文件的信息&#xff0c;我们发现这些文件都含有executable这个单词&#xff0c;那么executable的意思就是这个文件在x86-64平台下是可以执行的…