028python-配置文件

news2024/9/22 7:30:16
配置文件:以properties 、config、ini、log4j等结尾的都是配置文件,里面的参数改一下,项目就可以按照不同的方式执行出来;
configparser 可以去读取配置信息,configparser里面的类模块ConfigParser;
配置文件编写分为三个区域:
section:只能是中括号,中括号扩起来的叫做片段 ;
option:键值对左侧的叫做option;
value:键值对右侧的叫做value;

一、配置文件

创建一个配置文件:case.config

[MODE]
mode=all

[PYTHON11]
num=89
name=生生

[LEMON]
mun=33
age=18
boss=华华

读取配置文件的数据方法一: 

import configparser

# 创建配置文件
cf = configparser.ConfigParser()  # 创建实例
cf.read('case.config', encoding='utf-8')

# 读取配置文件的数据方法一
res_1 = cf.get('MODE', 'mode')  # get 获取数据
print(res_1)

 读取配置文件的数据方法二:

import configparser

# 创建配置文件
cf = configparser.ConfigParser()  # 创建实例
cf.read('case.config', encoding='utf-8')

# 读取配置文件的数据方法二
# cf['MODE']——>返回配置文件对象,cf['MODE']['mode'] 取文件对象mode的值
res_2 = cf['MODE']['mode']   
print(res_2)

获取所有片段section: 

import configparser

# 创建配置文件
cf = configparser.ConfigParser()  # 创建实例
cf.read('case.config', encoding='utf-8')

# 获取所有片段:
print(cf.sections())

 根据指定的片区拿到所有的items(键值对):

import configparser

# 创建配置文件
cf = configparser.ConfigParser()  # 创建实例
cf.read('case.config', encoding='utf-8')

# 根据指定的片区拿到所有的items
# 其中PYTHON11是一个片区section, items 是指键值对,每个键值对存在一个元组里面,然后嵌套一个列表里面
print(cf.items('PYTHON11'))   

数据类型讨论的问题:获取到的数据都是字符串类型,可以使用eval()转换数据成原本的类型

import configparser

# 创建配置文件
cf = configparser.ConfigParser()  # 创建实例
cf.read('case.config', encoding='utf-8')

# 打印出配置文件cf中获取片区PYTHON11中的num数据值
print(cf.get('PYTHON11', 'num'))

# 打印出配置文件cf中获取片区PYTHON11中的num数据值是字符串类型数据
print(type(cf.get('PYTHON11', 'num')))

# eval()转换配置文件中获取的片区中value的数据类型
print(type(eval(cf.get('PYTHON11', 'num'))))

2、配置文件与excel结合使用 

1、创建一个hettp请求:

import requests


# 课堂派 登录、查询请求
class HttpRequest:
    """利用requests封装get请求和post请求"""

    def http_request(self, deng_url, deng_data, method, cookie=None):  # url、data、cookie 参数化
        """url:请求的地址 http://xxxx:port
        param(参数):传递的参数,非必填参数,字典格式传递参数
        method:请求方式,支持get以及post请求
        cookie:请求的时候传递的cookie值"""

        # 登录
        if method.lower() == 'get':
            deng_res = requests.get(deng_url, json=deng_data, cookies=cookie)  # 响应结果的消息实体
        else:
            deng_res = requests.post(deng_url, json=deng_data, cookies=cookie)  # 响应结果的消息实体
        return deng_res  # 返回一个消息实体

2、创建文件配置和配置文件类:

(1)创建一个配置文件:case.config

[MODE]
mode=[1,3]

(2)创建一个配置文件类:

import configparser


# 创建文件配置类
class ReadConfig:
    def read_config(self, file_name, section, option):
        # 返回配置文件对象
        cf = configparser.ConfigParser()
        # 读取配置文件数据
        cf.read(file_name, encoding='utf-8')
        # 返回section、option
        return cf.get(section, option)

3、创建一个excel数据文件:文件名‘nuannuan’,sheet名‘nuannuan_04’,列表标题如下:

4、创建一个反射类:

class GetData:
    Cookie = None  # 存储cookie,初始值None

5、创建一个从excel中获取测试数据的类:

from openpyxl import load_workbook
# 导入配置文件类
from class_015.config_excel.read_config import ReadConfig


class DoExcel:
    def __init__(self, file_name, sheet_name):
        self.file_name = file_name
        self.sheet_name = sheet_name

    def get_data(self):
        """用例的可配置:
        button(button是参数名,标识符,不以数字开头,不使用关键字即可):
        控制是否执行所有用例,默认值是all,为all则执行所有用例
        如果不等于all的话,就进入分值判断
        button的值只能输入all、列表 这两种类型的参数"""
        # 从配置文件读取mode值
        mode = ReadConfig().read_config('case.config', 'MODE', 'mode')
        wb = load_workbook(self.file_name)
        sheet = wb[self.sheet_name]
        test_data = []

        for i in range(2, sheet.max_row + 1):
            sub_data = {}
            sub_data['case_id'] = sheet.cell(i, 1).value
            sub_data['module'] = sheet.cell(i, 2).value
            sub_data['title'] = sheet.cell(i, 3).value
            sub_data['method'] = sheet.cell(i, 4).value
            sub_data['url'] = sheet.cell(i, 5).value
            sub_data['data'] = sheet.cell(i, 6).value
            sub_data['expected'] = sheet.cell(i, 7).value

            test_data.append(sub_data)  # 存储了所有数据
        # 根据button值去进行判断
        if mode == 'all':
            final_data = test_data
        else:
            final_data = []
            #  对test_data所有的数据进行遍历
            for item in test_data:
                if item['case_id'] in eval(mode):
                    final_data.append(item)

        return final_data  # 获取返回的数据

6、执行用例并获取测试报告:

import unittest
import HTMLTestRunnerNew
from class_015.config_excel.class_lei import TestKeTang

# 避坑——>使用ddt,使用loader加载用例
# 存储用例,加载数据
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestKeTang))

with open('test_kt_report.html', 'wb') as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2, title='python“课堂派”单元测试报告',
                                              description='报告描述:自动化课堂派测试报告', tester='暖暖')
    runner.run(suite)

 

 

 

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

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

相关文章

SpringMVC 笔记

1. SpringMVC 简介 1.1 什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean&#xff…

Linux安装Docker(这应该是你看过的最简洁的安装教程)

Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行。Docker的核心是Docker引擎,它可以自动化应用程序的部署、扩展和管理,同时还提供了一个开放的API,可以与其他工…

一文带你了解MySQL之连接原理

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 搞数据库一个避不开的概念就是Join,翻译成中⽂就是连接。相信很多小伙伴初学连接的时候有些一脸懵,理解了连接的语义之后又可能不明白各个表中的记录到底是怎么连起…

用iOS版ChatGPT第一步:手把手带你注册美区Apple ID!(史上最简单)

大家好,我是鸟哥。 前两天ChatGPT官方毫无征兆的上线了iOS版,和网页版的相比功能和响应速度都提升了N个档次,具体看这篇文章:iOS版ChatGPT突然上线!Plus用户笑疯了! 但是呢,目前iOS版只在美区…

玩客云刷NAS

测试路由器支持IPV6 参考 这里 我用的是TPlink WDR7660 支持IPV6 主要设置桥模式 玩客云刷写固件 参考 这里 还有这里 玩客云固定IP 参考这里 sudo armbian-config 选择Network 选择有线网络->ip 选择static 然后根据自己情况进行设置 点击OK即可 更新国内源 参考这里 证书…

那就别担心了(DFS优化)30行代码简单易懂

下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。 博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑…

最简单的 goland package 教程包括自定义包的使用

一、Hello World项目 一切从最简单开始: mkdir myappcd myappgo mod init myapp // myapp是主项目名 这行命令将生成一个go.mod文件,这个文件会记录所有的包的依赖关系,一个空的go.mod只有项目名称和go版本号. nano main.go : package mai…

VMware虚拟机三种网络模式详解之NAT(地址转换模式)

VMware虚拟机三种网络模式详解 NAT(地址转换模式) 二、NAT(地址转换模式) 刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟…

[组合数学]母函数与递推关系

文章目录 母函数---解决计数组合 球相同 盒子不同 不能是空 C n − 1 m − 1 \quad C_{n-1}^{m-1} Cn−1m−1​数的拆分 递推关系常系数线性齐次递推关系常系数线性非齐次递推关系汉诺塔递推关系 母函数—解决计数 普母函数—组合问题 指母函数—排列问题 f(x) ∑ i 1 n a i…

阿里云服务器开放端口的正确方式(超详细新版教程)

阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法…

VMware虚拟机三种网络模式详解之Host-Only(仅主机模式)

VMware虚拟机三种网络模式详解 Host-Only(仅主机模式) 三、Host-Only(仅主机模式) Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机…

CAR-T细胞疗法在实体瘤研究中的挑战和新进展

什么是CAR-T? CAR-T是Chimeric Antigen Receptor T-cell(嵌合抗原受体T细胞)的缩写。它是通过将人体自身的T细胞进行基因改造,使其具有针对肿瘤细胞的抗原特异性,从而增强免疫系统对肿瘤细胞的攻击能力。CAR-T治疗的过程&#xf…

OJ练习第107题——二叉搜索子树的最大键值和

二叉搜索子树的最大键值和 力扣链接:1373. 二叉搜索子树的最大键值和 题目描述 给你一棵以 root 为根的 二叉树 ,请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下: 任意节点的左子树中的键值都 小于 此节点的键值。 任意…

SpringBoot——IOC与AOP

文章目录 IOC AOP一、 分层解耦1.1 IOC - 控制反转 详细1.2 DI - 依赖注入 详解 二、AOP2.1 了解2.2 快速入门 - AOP 开发步骤2.2.1 Maven依赖2.2.2 代码实现2.2.3 AOP 应用场景及优势 2.3 核心概念2.3.1 连接点 - JoinPoint2.3.2 AOP执行流程 2.4 通知2.4.1 通知类型2.4.2 通知…

百度贴吧视频发布软件视频教程(操作十分简单)

百度贴吧视频发布软件视频教程(操作十分简单) 软件有月卡、季卡、半年卡、年卡 【有时软件个别卡种售空,价格有上涨下降,关注获取当日价格】 我现在正在发帖的一个实时的一个画面,就是有很多同学问我就是喜羊羊今天还好跑吗,明天…

linux入门---通信的理解和匿名管道

这里写目录标题 为什么有通信通信的两个标准通信的本质管道通信的本质如何实现管道通信管道文件的特点管道的特征如何理解指令上的管道 为什么有通信 在我们的生活中有很多地方都需要用到通信,比如说出去玩要告诉伙伴们我们到哪了,做一件事的时候得通过…

MySQL基础(三十七)主从复制

1. 主从复制概述 1.1 如何提升数据库并发能力 此外,一般应用对数据库而言都是“ 读多写少 ”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做 主从架构 、进行 读写分离 ,这样同样可以提…

第四十六天学习记录:C语言进阶:KMP算法个人学习方法

学习了strstr库函数后,老师让了解KMP算法,这也算是我接触到的第一个算法。 由于这一块得自己翻资料自学,因此初识比较吃力。 后面根据自己的理解方式,个人认为理解KMP算法最关键点就是理解next数组是怎么生成的。 下面说说我理解n…

对于西瓜书神经网络的c#手写版本

本文根据西瓜书第五章中给出的公式编写,书中给出了全连接神经网络的实现逻辑,本文在此基础上编写了Mnist10手写10个数字的案例,网上也有一些其他手写的例子参考。demo使用unity进行编写,方便且易于查错。 该案例仅作为学习&#x…

CSS零基础快速入门(详细教程)

1,CSS概述 CSS是层叠样式表,由Cascading Style Sheets简称而来。 CSS的功能为:能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,并且能够做到页面的样式和结构分离。 CSS的作用效果跟我们日常使用…