Pytest——》文件路径处理

1、层级结构

2、文件路径获取:config

import os.path


class Config(object):
    project_path = os.path.split(os.path.split(__file__)[0])[0]  # __file__获取当前文件的绝对路径


if __name__ == '__main__':
    print(os.path.split(os.path.split(__file__)[0])[0])
    print(os.path.join(Config.project_path, "datas/files/testfile.xls"))


路径结果:

D:\Study\pythonProject\venv\Scripts\python.exe D:/Study/pythonProject/PytestFile/config/config.py
D:/Study/pythonProject/PytestFile
D:/Study/pythonProject/PytestFile\datas/files/testfile.xls

Process finished with exit code 0

3、文件接口请求处理:

import pytest
import requests, os
from PytestFile.config.config import Config


class TestFile(object):
    case_file = [{"data": {"filename": "testfile"},
                  "file": {
                      "filemsg":
                          ("testfile.xls", open(os.path.join(Config.project_path, "datas/files/testfile.xls")))}
                  }]

    def setup_class(self):        #用例执行前,执行登录方法
        self.r = requests.Session()    #多次调用,只登录一次
        login = self.r.request(method="POST", url="http://localhost:8080/login",
                               data={"username": "test01", "password": "123456"})
        assert login.json().get("msg") == "login-pass"

    @pytest.mark.parametrize("upload_case", case_file)   #文件数据参数化
    def test_upload(self, upload_case):
        upload_file = self.r.post("http://localhost:8080/upload", data=upload_case.get("data"),
                                  files=upload_case.get("file"))
        assert upload_file.json()[0].get("filename") == upload_case["data"].get("filename")

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
### 使用 Pytest 解析 YAML 文件 在使用 `pytest` 进行单元测试时,可以通过加载和解析 YAML 文件来实现数据驱动测试。这不仅提高了代码的可维护性和灵活性,还减少了硬编码带来的问题。 #### 1. 安装必要的库 为了能够读取和解析 YAML 文件,需要安装 Python 的第三方库 `PyYAML` 或其更高效的替代品 `ruamel.yaml`。可以使用以下命令完成安装: ```bash pip install pyyaml ruamel.yaml ``` --- #### 2. 封装 YAML 文件读取和解析函数 创建一个工具类或函数,专门负责从指定路径读取并解析 YAML 文件的内容。以下是具体实现方式: ```python import os from ruamel.yaml import YAML def load_yaml(file_path): """ 加载并解析 YAML 文件。 参数: file_path (str): YAML 文件的绝对路径 返回: dict: 解析后的字典对象 """ if not os.path.exists(file_path): raise FileNotFoundError(f"The specified YAML file does not exist: {file_path}") yaml = YAML(typ='safe') # 创建安全模式下的 YAML 对象 with open(file_path, 'r', encoding='utf-8') as f: data = yaml.load(f) # 加载并返回解析结果 return data ``` 此部分实现了 YAML 文件的安全加载与解析[^1]。 --- #### 3. 结合 Fixture 实现动态参数化 `pytest` 提供了内置的支持机制——Fixture 来管理测试资源。通过定义自定义 Fixture 并将其与 YAML 数据结合,可以在多个测试用例之间共享这些数据。 下面是一个简单的例子,展示如何将 YAML 中的数据作为参数传递给测试用例: ```python import pytest from pathlib import Path @pytest.fixture(scope="module", params=load_yaml(Path(__file__).parent / "data.yml").get('test_cases', [])) def test_data(request): """提供来自 YAML 文件中的测试数据""" return request.param ``` 上述代码片段中,`params` 接收了一个由 YAML 文件转换而来的列表形式的测试案例集合。 --- #### 4. 编写基于 YAML 数据的测试用例 假设有一个名为 `data.yml` 的文件,其中存储了一些待验证的功能输入及其预期输出,则可以根据该文件内容设计相应的断言逻辑如下所示: ```python def test_example(test_data): input_value, expected_output = test_data['input'], test_data['expected'] actual_result = some_function(input_value) # 替换为实际被测函数调用 assert actual_result == expected_output, f"Test failed! Input={input_value}, Expected={expected_output}" ``` 这里展示了如何利用前面提到的 fixture 自动注入每组独立的测试条件来进行逐一校验[^5]。 --- #### 5. 配置项目结构支持多模块测试 对于复杂的大型应用来说,往往会有不同的业务领域划分对应的子目录存放各自的测试脚本及相关资源配置文件。例如,在根目录下建立名为 `tests/testcases/` 的特殊区域用于集中管理所有类型的测试集;再进一步细分出像 `product_manage/`, `user_manage/` 等特定主题的小分类夹层[^4]。 --- #### 6. 启用额外插件增强报告能力 如果希望生成更加直观详尽的结果反馈文档,则可通过修改全局设置文件 `.pytest.ini` 添加相关内容项以激活某些扩展特性,比如集成 allure 测试框架生成美观图表界面版本的历史记录追踪服务等等[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值