版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xxxslinyue/article/details/82992764
题目分享:链接:https://pan.baidu.com/s/1P16uKgLtrLjIl1o5Jo9y1Q 密码:nmbs
模拟共享单车
//功能三描述
2.3 位置信息的接收处理(GN_WZ)
GPS 模块定时(1s)向外发送位置信息,锁具控制模块接收并处理 GPS 发送
位置信息。
序号 数据名称 单位 范围
1 经度 度 0-180
2 经度标志位 固定值 0X45(E-东经),0X57(W-西经)
3 纬度 度 0-90
4 纬度标志位 固定值 0X4E(N-北纬),0X53(S-南纬)
由于位置信息是 GPS 模块定时发送的,为可靠性起见,需要进行如下容错处
理:
1、当接收到的位置信息超出范围时,该 GPS 数据帧无效,做丢包处理,锁
具控制模块使用上一帧的信息;
2、经纬度标志位不正确时,锁具控制模块使用上一帧的位置信息。
3、经度、纬度四舍五入方式保留三位小数。
测试代码示例:
import Manu
############标准测试模板#######################
## Test:测试数据执行函数体,【测试数据】每一行数据调用一次Test
## arg:输入参数
## exp:预期输出
def Test(arg,exp):
print 'Hello World!'
for a in arg:
print a
for e in exp:
print e
Protocol_gpstime.Hour.Value=arg[0]
Protocol_gpstime.Minute.Value=arg[1]
Protocol_gpstime.Second.Value=arg[2]
Protocol_gpstime.JingDu.Value=arg[3]
Protocol_gpstime.Flag_JD.Value=arg[4]
Protocol_gpstime.WeiDu.Value=arg[5]
Protocol_gpstime.Flag_WD.Value=arg[6]
Protocol_gpstime.Write()
show=[]
str='输入数据:时%d,分%d,秒%d,经度%f,经度标识%d,纬度%f,纬度标识%d\n' %(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6])
show.append(str)
show.append(exp[0])
passed=Manu.Check(show)
print '测试结果:%s' %passed
# 断言:根据实际需求修改一下注释的部分
assertor=API.Platform.Assertion.Create()
assertor.AddInput('时',arg[0])
assertor.AddInput('分',arg[1])
assertor.AddInput('秒',arg[2])
assertor.AddInput('经度',arg[3])
assertor.AddInput('经度标识',arg[4])
assertor.AddInput('纬度',arg[5])
assertor.AddInput('纬度标识',arg[6])
assertor.AddOutput('界面显示',exp[0],passed)
if passed:#测试通过
assertor.Pass()
else:
assertor.Failed()
b=assertor.Commit()
## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################
############自定义测试模板#######################
## 如果不希望使用测试数据驱动测试,则将【标准测试模板】删除,使用【自定义模板】
## 否则可以删除本节
#def Main():
# print 'Hello world'
#Main()
#################################################
测试结果既可以通过应用程序查看
也可以通过日志文件进行查看
再来看一个接口测试的示例
接口4的需求为:
在骑行状态下,锁具控制模块要在相对固定的时间(6-10S)内向服务器上
报位置信息
为了清除刚才的环境,可以点击清除环境设置,然后点开接口4的测试,自己写上测试代码,点击清理环境。
这是例题给的测试代码:
import time,Manu
############标准测试模板#######################
## Test:测试数据执行函数体,【测试数据】每一行数据调用一次Test
## arg:输入参数
## exp:预期输出
def Test(arg,exp):
print 'Hello World!'
print '输入参数:%s' %arg[0]
print '预期输出:%s' %exp[0]
arg=arg[0].split(',')
l=[]
for a in arg:
l.append(int(a,16))
b=RS232通道.Write(l)
API.Common.Timer.Normal.Sleep(100)
t1=time.time()
t2=t1
out=''
while t2-t1<10:
bool=Protocol_ServerOutput.Read()
t2=time.time()
if bool and Protocol_ServerOutput.Flag.Value==2:
# array=Protocol_ServerOutput.ToBytes()
# for a in array:
# h='%02X' %a
# out+=str(h)
# out+=','
#
# print '输出的数据:%s' %out[:-1]
break
passed=True
if Protocol_ServerOutput.Head.Value!=0x55AA:
passed=False
print '包头错误! %s' %Protocol_ServerOutput.Head.Value
if Protocol_ServerOutput.BikeID.Value!=0xBB:
passed=False
print '包头错误! %s' %Protocol_ServerOutput.Head.Value
if Protocol_ServerOutput.jiaoyanhe.Checked!=True:
passed=False
print '校验和错误!'
if Protocol_ServerOutput.Tail.Value!=0x55AA:
passed=False
print '包尾错误! %s' %Protocol_ServerOutput.Tail.Value
## 断言:根据实际需求修改一下注释的部分
assertor=API.Platform.Assertion.Create()
assertor.AddInput('输入数据:',arg[0])
assertor.AddOutput('输出数据:',exp[0],out)
if passed:#测试通过
assertor.Pass()
print "服务器位置与时间上报输出接口正确。"
else:
assertor.Failed()
print "服务器位置与时间上报输出接口错误!"
b=assertor.Commit()
## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################
运行结果为
性能测试示例:
需求:
在骑行状态下,锁具控制模块定时上报位置与时间信息要控制在 6-10s 之间
示例代码:
import time
t1=time.time()
def Test(arg,exp):
global t1
print 'Hello World!'
t2=time.time()
while True:
bool=Protocol_ServerOutput.Read()
t2=time.time()
if bool:
break
print 'GPS上报时间间隔为:%.2f秒' %(t2-t1)
passed=False
if int(t2-t1)>=6 and int(t2-t1)<=10:
passed=True
## 断言:根据实际需求修改一下注释的部分
assertor=API.Platform.Assertion.Create()
assertor.AddOutput('输出参数1',exp[0],str(t2-t1))
if passed:#测试通过
assertor.Pass()
else:
assertor.Failed()
t1=t2
b=assertor.Commit()
## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################
测试结果: