some working learning总结学习
1. Python通过pypyodbc访问Access数据库
https://blog.csdn.net/jisuanjiguoba/article/details/73163721
2. java大数据学习路线图
https://blog.csdn.net/weixin_44386638/article/details/86664006
3. 使用Python对Access读写操作
https://www.cnblogs.com/mayi0312/p/6646957.html
4. python 字符串组成MySql 命令时,字符串含有单引号或者双引号导致出错解决办法
https://www.cnblogs.com/Presley-lpc/p/9152020.html
5. 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例
https://blog.csdn.net/weixin_36185028/article/details/78685844
6.实现三个功能
1. 读取excel脚本上的测试用例,使用Automation desk执行py脚本,运行程序,将测试结果通过socket的方式(因为pyqt来实时读取测试结果,操控机器,com段通信涉及到进程、线程占用的问题,所以采用了socket)发送到pyqt做的控制器(监控网站测试需求,操作automation执行测试用例并读取返回结果)
from openpyxl import load_workbook
from time import sleep
from audxilapiconveniencelib import Write,Read
from openpyxl.comments import Comment
from openpyxl.styles import colors, Font
import socket
import json
import time #记录测试用例所耗时间
start_time = time.time() #测试进度推送
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("localhost", ) #测试用例导入并筛选
TC=load_workbook ("C:\\03_TestCase\\BenShaw\\ATC\\VCU_TC_LvPwrOff.xlsx")
TCsheet=TC.active
TCrows=[]
Cases=[]
for row in TCsheet.iter_rows():
TCrows.append(row)
#for i in range(,):
for i in range(,):
Cases.append(TCrows[i]) #测试执行
item= sum_num =
for Case in Cases: Result=[]
#PreCondition
init_list = []
for i in range(,):
init_list.append(Case[i].value) check_pre_list = []
tag =
count =
while count<: #分4种条件,先判断是否Powcomplete,chargfed,stready,状态,
# 、全0;
# 、,,;
# 、,,; 高压上电状态
# 、,,; 充电状态
if init_list[] == and init_list[] == and init_list[] == :
print("用例%s进入初始条件一的判断"%sum_num)
Write(_AD_.MAPort, _AD_.TestVar.IN_ChrgOffButton_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_12Voltage_Value, Case[].value)
tag =
count =
elif init_list[] == and init_list[] == and init_list[] == :
print("用例%s进入初始条件二的判断"%sum_num)
Write(_AD_.MAPort, _AD_.TestVar.IN_ChrgOffButton_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_12Voltage_Value, Case[].value)
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, Case[].value)
time.sleep()
count2 =
while count2<:
if Read(_AD_.MAPort, _AD_.TestVar.RX_BMS_Tx_stPowComplete) == init_list[]:
print("用例%s初始条件二再循环判断正确"%sum_num)
tag =
break
else:
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
time.sleep()
count2 +=
count =
elif init_list[] == and init_list[] == and init_list[] == :
print("用例%s进入初始条件三的判断"%sum_num)
Write(_AD_.MAPort, _AD_.TestVar.IN_ChrgOffButton_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_12Voltage_Value, Case[].value)
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, Case[].value)
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyStart_Value, Case[].value)
time.sleep()
count3 =
while count3<:
if Read(_AD_.MAPort, _AD_.TestVar.RX_BMS_Tx_stPowComplete) == init_list[]: count4 =
while count4 < :
if Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stReady) == :
print("用例%s初始条件三再循环判断正确"%sum_num)
#退出count3的循环
count3 =
tag =
break
else:
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyStart_Value, )
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyStart_Value, )
count4 +=
count3 +=
else:
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
time.sleep()
count3 +=
count =
elif init_list[] == and init_list[] == and init_list[] == :
print("用例%s进入初始条件四的判断"%sum_num)
Write(_AD_.MAPort, _AD_.TestVar.IN_ChrgOffButton_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_12Voltage_Value, Case[].value)
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.RC2Value_Value, Case[].value)
time.sleep() count5 =
while count5<:
if Read(_AD_.MAPort, _AD_.TestVar.RX_BMS_Tx_stPowComplete) == init_list[] and Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stChrgFed) == init_list[]:
print("用例%s初始条件四再循环判断正确"%sum_num)
#退出count3的循环
tag =
break
else:
Write(_AD_.MAPort, _AD_.TestVar.RC2Value_Value, )
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
time.sleep()
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, ) Write(_AD_.MAPort, _AD_.TestVar.RC2Value_Value, Case[].value)
time.sleep()
count5 +=
count =
print("退出条件4循环")
else:
print("用例%s属于目前未加初始条件,待扩展判断区"%sum_num)
count += check_pre_list.append(Read(_AD_.MAPort, _AD_.TestVar.RX_BMS_Tx_stPowComplete))
check_pre_list.append(Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stChrgFed))
check_pre_list.append(Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stReady))
#进行写入操作前的判断,节省资源
# if tag:
#Action
print("用例%s进入测试步骤正确"%sum_num)
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyStart_Value, Case[].value)
#写入speed
Write(_AD_.MAPort, _AD_.TestVar.Active_Value, )
Write(_AD_.MAPort, _AD_.TestVar.Control_Value,Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.RC2Value_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_ChrgOffButton_Value, Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, Case[].value)
time.sleep(Case[].value)
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, Case[].value)
time.sleep(Case[].value) #Result
Result.append(Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stDCDCEn))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_powMaxPerm))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.RX_VCU_Tx_stChrgFed))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_BMSPwrOn_0_1__Out))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_MCUPwrOn_0_1__Out))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_DCPwrOn_0_1__Out))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_VCUst_0_1__Out))
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_OBCPwrOn_0_1__Out))
time.sleep()
Result.append(Read(_AD_.MAPort, _AD_.TestVar.O_S_ACPDURly_ON_0_1__Out)) #Result Judge
item+=
j=
for i in range(,):
if Result[i-]==Case[i].value:
pass
else:
j=j+
Case[i].comment=Comment('Actual Result:'+str(Result[i-]), 'Fail')
Case[i].font=Font(color=colors.RED)
if j==:
Case[].value='Pass'
data=json.dumps([str(item),'Pass'])
server_socket.sendto(data,address)
else:
Case[].value='Fail'
data=json.dumps([str(item),'Fail'])
server_socket.sendto(data,address)
sleep() else:
Case[].value='进入初始条件Fail'
print("初始条件进入Fail,case %s"%sum_num)
data=json.dumps([str(item),'Fail']) for j in range(,):
if check_pre_list[j-] ==Case[j].value:
pass
else:
Case[j].comment=Comment('Actual Result:'+str(check_pre_list[j-]), 'Fail')
Case[j].font=Font(color=colors.RED) #TestCleanUp
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyON_Value, )
Write(_AD_.MAPort, _AD_.TestVar.IN_PowON_Value, )
Write(_AD_.MAPort, _AD_.TestVar.IN_12Voltage_Value, )
Write(_AD_.MAPort, _AD_.TestVar.RCValue_Value, )
Write(_AD_.MAPort, _AD_.TestVar.RC2Value_Value, )
Write(_AD_.MAPort, _AD_.TestVar.IN_KeyStart_Value, )
time.sleep()
sum_num += #测试报告保存
ExcuteTime=time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime())
TC.save("C:\\03_TestCase\\BenShaw\\ATC\\VCU_TC_LvPwrOff_"+ExcuteTime+".xlsx") stop_time = time.time()
ctime = stop_time-start_time if ctime<:
min =
sec = int(ctime % )
else:
min = int(ctime / )
sec = int(ctime % ) print("此功能用例耗费时间 %s分钟%s秒"%(min,sec))
some working learning总结学习的更多相关文章
- (转)Predictive learning vs. representation learning 预测学习 与 表示学习
Predictive learning vs. representation learning 预测学习 与 表示学习 When you take a machine learning class, ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)
##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...
- deep learning深度学习之学习笔记基于吴恩达coursera课程
feature study within neural network 在regression问题中,根据房子的size, #bedrooms原始特征可能演算出family size(可住家庭大小), ...
- Andrew Ng Machine Learning Coursera学习笔记
课程记录笔记如下: 1.目前ML的应用 包括:数据挖掘database mining.邮件过滤email anti-spam.机器人autonomous robotics.计算生物学computati ...
- Active Learning主动学习
Active Learning主动学习 我们使用一些传统的监督学习方法做分类的时候,往往是训练样本规模越大,分类的效果就越好.但是在现实生活的很多场景中,标记样本的获取是比较困难的,这需要领域内的专家 ...
- <Machine Learning - 李宏毅> 学习笔记
<Machine Learning - 李宏毅> 学习笔记 b站视频地址:李宏毅2019国语 第一章 机器学习介绍 Hand crafted rules Machine learning ...
- Active Learning 主动学习
Active Learning 主动学习 2015年09月30日 14:49:29 qrlhl 阅读数 21374 文章标签: 算法机器学习 更多 分类专栏: 机器学习 版权声明:本文为博主原创文 ...
- Dictionary Learning(字典学习、稀疏表示以及其他)
第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Di ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
随机推荐
- linux下如何源码编译安装vim
1. 获取源码 git clone https://github.com/vim/vim.git ~/vim cd ~/vim 2. 配置 ./configure --prefix=/home/jel ...
- Win32汇编学习(6):键盘输入消息
这次,我们将要学习WINDOWS程序是如何处理键盘消息的. 理论: 因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它.WINDOWS 将负责把击键消息送到具有输入焦点的那个应 ...
- MVC强类型视图,详细信息展示【五】
一.在MVC三种讲到两种后端发送数据到前端的方法,今天讲的是第三种,发送过去的方法 [强类型视图]. 1. 强类型视图,就是指在传递的过程中只能传递一种类型的数据到该视图中,就比如默认的传递的数据类型 ...
- vue-路由懒加载
将import ... from..改为 const Foo = resolve => require(['./Foo.vue'], resolve)
- [Hibernate] 通过 properties 类和 hql 语句进行动态查询
//需要保证Emp和EmpProperties中的setter和getter以及属性以及 参数占位符(:eName) 的一致//动态查询 @Test public void test4(){ EmpP ...
- Access查询时间段 .
access数据库cmd // SendTime是在Access数据库中是文本类型 StringBuilder sb = new StringBuilder(); sb.Append("SE ...
- centos7.4安装nginx
参考地址: https://blog.csdn.net/weixin_41048363/article/details/80236663 我这里没有使用阿帕奇之类的服务器,只搭建了node环境.所以并 ...
- 非阻塞IO发送http请求
import socket from urllib.parse import urlparse from selectors import DefaultSelector, EVENT_READ, E ...
- vue配置编译本地打开dist/index.html文件
项目完成后npm run build会生成dist文件,此时直接将dist文件发布到线上即可,若想本地打开dist/index.html可看,一般页面为空,或者报错找不到css和js文件,则需要更改一 ...
- Win10系列:C#应用控件基础14
ProgressBar控件 有时候用户需要执行比较复杂的任务,等待任务完成需要很长时间,在等待的过程中一般会使用进度条提示当前任务的执行进度,让用户更好的掌握任务的执行状态,例如在下载资源时会显示下载 ...