1、操作excel
1 """ 2 1、使用第三方模块openpyxl 3 2、安装:pip install openpyxl 4 3、文件 .xlsx一定要自己新建(不支持.xls类型) 5 4、流程:打开工作簿(excel)----定位表单(sheet)---定位单元格---读取值 6 5、如果是数值类型的(int、float),读取之后的类型是数值类型;如果是其他类型的内容,读取之后的类型是str 7 8 """ 9 10 import openpyxl 11 12 from openpyxl import load_workbook 13 14 # 打开Excel:文件放置在当前文件夹中 15 wb = load_workbook("python.xlsx") # 返回的是工作簿 16 17 # 定位表单 18 sheet = wb[‘name‘] 19 20 # 定位单元格并取值 21 result = sheet.cell(2, 2).value 22 23 24 # 修改值 25 sheet.cell(3, 3).value = "修改" # 赋值语句 26 27 # 保存工作薄【一定要保存,否则修改无效,而且保存的话要先关闭excel,否则报错PermissionError: [Errno 13] Permission denied: ‘python.xlsx‘】 28 wb.save("python.xlsx") 29 30 # 获取最大行 最大列 31 print(sheet.max_row) 32 print(sheet.max_column)
2、操作ddt
1 """ 2 1、使用第三方模块ddt 3 2、安装:pip install ddt 4 3、ddt:结合单元测试来做的 5 4、帮我们拆分数据,传递参数给测试用例 6 """ 7 8 import unittest 9 from ddt import ddt, data, unpack 10 11 test_data = [[1, 2], 12 [3, 4]] 13 14 15 @ddt # @ddt 专门装饰测试类 16 class TestMath(unittest.TestCase): 17 18 @data(test_data) # @data 专门装饰测试用例 19 def test_add_1(self, item): # 使用@data之后,这边要加一个参数来接收 20 print(item) 21 # a = 10 22 # b = 20 23 a = item[0] 24 b = item[1] 25 print("两个数和是", a + b) 26 27 28 if __name__ == ‘__main__‘: 29 unittest.main(verbosity=2)
3、操作config
1)首先新建一个配置文件:case.config,内容如下:FLAG是section;mode,case_id_list是option
[FLAG]
mode=on
case_id_list=[2,4]
[PYTHON]
num=87
2)对该配置文件的操作
1 """ 2 1、配置文件的分类:.ini .properties .config .conf .xml 3 2、本次主要讲文本形式的 4 3、configparser模块 专门处理配置文件 5 4、配置文件的数据读取都是字符串类型 6 """ 7 8 import configparser 9 class ReadConfig: 10 def read_config(self, file_path, section, option): 11 # 实例化 12 cf = configparser.ConfigParser() 13 14 # 调用read函数打开配置文件 15 cf.read(file_path, encoding="utf-8") 16 17 # 获取数据 18 value = cf.get(section, option) 19 20 # 获取到的所有数据均是字符串,想要还原成本身的数据类型使用eval()函数 21 # print(eval(value)) 22 23 return value 24 25 if __name__ == ‘__main__‘: 26 value = ReadConfig().read_config("case.config", "FLAG", "mode") 27 print(value)
4、操作logging
1 """ 2 1、日志:记录系统的操作 记录代码的运行 3 2、模块logging,不需要安装python自带的 4 3、log日志分为5个级别:debug info warning error critical(crash) 5 1)从左往右 级别一次加重 6 2)收集日志:收集器 会有一个名字,默认顶级收集器:root;默认只收集warning(包含)以上级别的信息 7 3)输出日志:输出控制台 8 9 10 """ 11 12 import logging 13 14 15 class MyLog: 16 def my_log(self, level, msg): 17 18 # 定义一个属于自己的日志收集器 19 my_logger = logging.getLogger("python10") 20 my_logger.setLevel("DEBUG") # 设置输出级别 大写或者数字 21 22 # 创造一个专属输出渠道 过滤 和排版; 格式如下: 23 formatter = logging.Formatter(‘%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息:%(message)s‘) 24 25 # 输出日志,方法一:输出到控制台 26 ch = logging.StreamHandler() # 输出到控制台 27 ch.setLevel("DEBUG") # 设置输出级别 大写或者数字 28 ch.setFormatter(formatter) 29 30 # 输出日志,方法二:输出到指定文件 31 fh = logging.FileHandler(‘python10.txt‘, encoding="utf-8") # 输出到指定文件 32 fh.setLevel("DEBUG") # 设置输出级别 大写或者数字 33 fh.setFormatter(formatter) 34 35 # 对接起来 给日志收集器添加一个渠道【最后输出的是收集和输出的级别的交集】 36 my_logger.addHandler(ch) 37 my_logger.addHandler(fh) 38 39 if level == "DEBUG": 40 my_logger.debug(msg) 41 elif level == "INFO": 42 my_logger.info(msg) 43 elif level == "WARNING": 44 my_logger.warning(msg) 45 elif level == "ERROR": 46 my_logger.error(msg) 47 elif level == "CRITICAL": 48 my_logger.critical(msg) 49 # 渠道要删除,否则日志输出会重复 50 my_logger.removeHandler(ch) 51 my_logger.removeHandler(fh) 52 53 def debug(self, msg): 54 self.my_log("DEBUG", msg) 55 56 def info(self, msg): 57 self.my_log("INFO", msg) 58 59 def warning(self, msg): 60 self.my_log("WARNING", msg) 61 62 def error(self, msg): 63 self.my_log("ERROR", msg) 64 65 def critical(self, msg): 66 self.my_log("CRITICAL", msg) 67 68 69 if __name__ == ‘__main__‘: 70 my_logger = MyLog() 71 my_logger.debug("天呢") 72 my_logger.info("小意思") 73 my_logger.warning("警告咯") 74 my_logger.error("发生错误咯") 75 my_logger.critical("崩溃哈哈哈")
logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘
format: 指定输出的格式和内容,format可以输出很多有用信息,如代码中所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
python中操作excel、ddt、config、logging方法
原文:https://www.cnblogs.com/lctest/p/12158091.html