用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台

  • 利用csv库来记录测试结果
  • 利用logging库来记录脚本运行信息
  • 利用ConfigParser库来读取测试配置信息
  • 利用ctypes库将测试信息带颜色打印在控制台
  • 总结

利用csv库来记录测试结果

在进行自动化测试时,我们需要记录测试运行结果,将结果存入文件进行自动化测试结果报告;
python csv库完全能满足这个功能,下面直接看code:
#生成测试结果
import csv
class Report_test:def __init__(self):self.setting = Config()#生成的csv文件: ..\Report_20181025101010.csvself.fname = "..\\Report_"+str(time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())))+".csv"#将测试结果写入csv文件def writer_data(self,data_log):with open(self.fname,'ab') as csvfile:csvwriter = csv.writer(csvfile,delimiter=',',lineterminator='\r\n')csvwriter.writerow(data_log)#读取csv文件def read(self):  with open(self.fname, 'r+') as csv_file:reader = csv.reader(csv_file)'''reader_list=[]for i in reader:reader_list.append(i)return reader_list'''return [row for row in reader] #写入测试结果并将信息打印在控制台def now_data(self,data_log):Report_test.writer_data(self,data_log)print Report_test.read(self)[len(Report_test.read(self))-1]# =====  test  =====
rep=Report_test()
rep.now_data(["pass"])
rep.writer_data(["333","3333","33333","3333"])
print rep.read()[len(rep.read())-1]

利用logging库来记录脚本运行信息

在自动化脚本运行时,我们需要了解当前脚本运行的状态,
需要了解脚本运行的所有信息来帮助我们进一步的优化和调试脚本;
python logging库完全能满足这个功能,下面直接看code:
#生成测试结果
class AddLog:setting = Config()logger=logging.getLogger()log_path= 'c:\\'#setting.log_path()#False log内容不会再控制台显示#True  log内容会在控制台显示def __init__(self,input=True):try:date=str(time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())))logname=AddLog.log_path+"\\"+date+".log"logging.basicConfig(filename=logname,level=logging.DEBUG ,format='%(asctime)s %(levelname)s :$  %(message)s',datefmt='[ %Y-%m-%d %H:%M:%S ]',filemode='w',encoding='utf-8')if input == True:console=logging.StreamHandler()console.setLevel(logging.DEBUG)formatter=logging.Formatter(" %(asctime)s %(levelname)s : %(message)s ","[ %Y-%m-%d %H:%M:%S ]")console.setFormatter(formatter)AddLog.logger.addHandler(console)elif input == False:print "Not show logs." else:print "The parameter is wrong, only False and True."except:import osos.makedirs(AddLog.log_path)def log(self):return AddLog.logger# =====  test  =====
logger=AddLog(True).log()
logger.info("aaaaaaaaaa")

利用ConfigParser库来读取测试配置信息

自动化测试脚本常常会用到外部配置参数来健壮脚本的重复利用。
python ConfigParser库完全能满足这个功能,下面直接看code:
#读取配置文件
class Config():def __init__(self):self.setting_path="C:\\Users\\utility\\settings.ini"def get_config(self, sector, item):config = ConfigParser.ConfigParser()config.read(self.setting_path)value = config.get(sector, item)return valuedef get_dir_path(self):res = self.get_config('Path', 'dir_path')return res.replace("\\", "\\\\")def agent_path(self):res = self.get_config('Path', 'agent_path')return res.replace("\\", "\\\\")def client_path(self):res = self.get_config('Path', 'client_path')return res.replace("\\", "\\\\")def call_number(self):res = self.get_config('Test_cfg', 'call_number')return resdef log_path(self):res = self.get_config('Settings', 'log_path')return resdef report_path(self):res = self.get_config('Settings','report_path')return res# =====  test  =====
test_init = Config()
log_path = test_init.log_path()

settings.ini

[Path]
dir_path = C:\Users\
agent_path = C:\Users\
client_path = C:\Users\[Test_cfg]
call_number = 10086[Settings]
log_path = C:\Users\
report_path = C:\Users\

利用ctypes库将测试信息带颜色打印在控制台

有时候我们需要更直观看到当前测试状态,测试结果Passed 将以绿色显示在控制台,测试结果failed以红色显示在控制台;
python ctypes库完全能满足这个功能,下面直接看code:
#生成测试结果
class Out_color:FOREGROUND_WHITE = 0x0007FOREGROUND_BLUE = 0x01 | 0x08# text color contains blue.FOREGROUND_GREEN= 0x02 | 0x08 # text color contains green.FOREGROUND_RED  = 0x04 | 0x08 # text color contains red.FOREGROUND_YELLOW = FOREGROUND_RED | FOREGROUND_GREENSTD_OUTPUT_HANDLE= -11std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)def __init__(self):pass#@ set color in computer terminal.def set_color(self, color, handle=std_out_handle):bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)return bool# Failed or Error messge is text color contains red.def messge_error(self, str):self.set_color(Out_color.FOREGROUND_RED)print strlogger.info(str)self.set_color(Out_color.FOREGROUND_WHITE)# Passed messge is text color contains green.def messge_pass(self, str):self.set_color(Out_color.FOREGROUND_GREEN)print strlogger.info(str)self.set_color(Out_color.FOREGROUND_WHITE)# Title messge is text color contains blue. def title(self, str):self.set_color(Out_color.FOREGROUND_BLUE)print strlogger.info(str)self.set_color(Out_color.FOREGROUND_WHITE)# =====  test  =====
output=Out_color()
output.messge_pass("Passed")
output.messge_fail("Failed")

总结

使用以上功能可以提高测试脚本的健壮性;

版权声明:本文出自Man_ge博客原创文章,转载必须注明出处:https://blog.csdn.net/Man_ge/article/details/83445358

作者:Man_ge https://blog.csdn.net/Man_ge

用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台相关推荐

  1. python写自动化测试脚本常见报错_Appium自动化测试

    3.     Appium安装配置 3.1.  限制 如果你在windows上安装appium,你没法使用预编译专用于OS X的.app文件,你也将不能测试IOS apps,因为appium依赖OS ...

  2. python写自动化测试脚本常见报错_Python Appium自动化测试 MonkeyScript

    Time will tell. 前边讲解的 Monkey 都是随机事件流,Monkey 在手机里像个无头苍蝇一样乱蹦乱跳,那么本章节就教你如何让 Monkey 按指令在手机里闹腾 -- Monkey ...

  3. Python学习笔记——脚本常用功能案例(识图定位,点击,文字输入)

    所需图片(测试时自己截图) 01.png 02.png 一.案例代码 import pyautogui import time import aircv as ac from PIL import I ...

  4. python手机自动化测试脚本语言_python脚本语言? Appium移动自动化测试

    appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. "移动原生应用"是指那些用iOS或者 Android SDK ...

  5. python写的系统常用命令(二)

    python写的系统常用命令,linux和windows通用,用的时候直接from util import *导入即可使用,很方便 #!/usr/bin/python # -*- coding: ut ...

  6. Python写阴阳师脚本带GUI又是一个学习小技巧

    Python写阴阳师脚本带GUI 需要用到环境 Python3. pycharm.天天模拟器.阴阳师. 准备库 pip install pyautogui pip install pywin32 需要 ...

  7. python写pdf的常用包?

    python写pdf的常用包? https://blog.csdn.net/Hodors/article/details/109198066

  8. Python+Selenium自动化测试脚本(入门)

    前言 最近在学习Python+selenium自动化测试,计划把公司已有一套自动化测试框架(UIAutomation+C#)用Python+Selenium框架实现一遍.先拿了一个csdn的登录页面练 ...

  9. python写的脚本怎么用,如何用python写脚本

    如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...

最新文章

  1. Google 出品的 Java 编码规范,值得借鉴!
  2. Safari浏览器的智能跟踪预防工作原理
  3. firebug中html显示为灰色的原因总结
  4. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A. Bear and Game 水题
  5. ubunut 下关闭apache服务自动启动
  6. oracle按用户采集信息,oracle 11g 手动收集用户统计信息
  7. mediarecoder 安卓_android 通过MediaRecorder实现简单的录音示例
  8. 手机充电器5V=1A和5V=2A的区别是什么?能通用吗?
  9. java中的diss可以做标识符吗_因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名...
  10. LeetCode_Maximum Subarray | Maximum Product Subarray
  11. linux usb ic读卡器,在Linux下使用ACS ACR1252U USB NFC读卡器
  12. 三维引擎导入obj模型全黑总结
  13. {转载}与我十年长跑的女朋友就要嫁人了。
  14. Ext Gantt甘特图1.2破解及方法
  15. PC微信逆向-PC微信HOOK-发送Gif表情(版本3.0.0.47)
  16. 字符串拼接用逗号隔开的四种方法
  17. 老年机打不出电话拨号失败服务器无响应,老年机为什么打不出去电话
  18. C++学习笔记(10)
  19. 基于 STM32对音频数据的 Flash 读取与 DAC 播放
  20. Java8--20道关于Stream流的题目练习

热门文章

  1. 《网络营销》实践任务五
  2. 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(五)
  3. 火山小视频伪原创教程 | 如何制作伪原创视频
  4. 现在做自媒体赚钱吗?
  5. 暑期学习日记29:js条件
  6. linux头文件和库在libc里,libc库和系统调用
  7. 企业软文推广共有几个步骤?记住这三步
  8. 随机密码生成。编写程序,在26个字母大小写和9个数字组成的列表中随机生成10个8位密码。
  9. 学习多线程必须掌握的基本概念
  10. opencv3.4将图像指定区域用另一幅图像覆盖