自动化测试之Python时间处理
2020-08-03 15:48:43 42
前言
在自动化测试过程中会出现一种情况,就是对某种订单的时间进行校验。例如:七天无理由退货的请求,云服务续费后的到期时间……这些情况如果要实行自动化测试校验就必须获取订单时间,然后推算出7天后、1个月后、甚至更长的时间点,从而正确的完成自动化测试的断言。
接下来就以Python为示范例子,简单讲解下云服务器包年包月计费逻辑时间的处理。
功能逻辑简明,当前时间为2020年1月,续费一个月则续费时长为31天,如续费两个月则续费时长为60天。
依赖库及方法
from datetime import timedelta, datetime
代码详情
自定义初始所需处理时间
首先定义一个类,默认time的输入参数为‘now’。在time为‘now’的情况下就会获取当前时间来定义self.tiem的时间,若自定义时间根据’%Y-%m-%d %H:%M:%S’
如:2020-05-06 16:52:27。
class GetNewTime:
def __init__(self, time='now'):
'''
默认为now当前时间,
若自定义时间根据'%Y-%m-%d %H:%M:%S'
如:2020-05-06 16:52:27
:param time:
'''
if time == 'now':
time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Stime = datetime.strptime(time, '%Y-%m-%d %H:%M:%S')
self.time = Stime
天数获取
根据self.time及num输出所需日(day), 如自定义的时间为2019年1月1日,num输入参数为1(表示顺延1个月),则输出31天。num输入参数为2(表示顺延2个月),则输出59天。
def day_mount_sum(self, num=1):
'''
根据self.time及num输出所需日,
如2019年1月,输出31
:param num: 月数
:return:
'''
day = 0
Mlist = []
y = self.time.year
for i in range(0, num):
if i == 0:
m = self.time.month
Mlist.append(m)
else:
m = self.time.month + i
while m >= 13:
m = m - 12
Mlist.append(m)
max = [1, 3, 5, 7, 8, 10, 12]
min = [4, 6, 9, 11]
for j in range(len(Mlist)):
if j != 0:
if Mlist[j] == 1 and Mlist[j - 1] == 12:
y = y + 1
if (Mlist[j] in max):
day = 31 + day
elif (Mlist[j] in min):
day = 30 + day
else:
if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
day = 29 + day
else:
day = 28 + day
return day</code></pre>
云服务器包年包月计费处理方法
该方法的输入参数有5个,分别对应月、日、时、分、秒。可以为正负数情况。最后输出最后确认到期时间。
def new_times(self, month=0, day=0, hours=0, minutes=0, seconds=0):
'''
计算后的时间
:param month:
:param day:
:param hours:
:param minutes:
:param seconds:
:return:
'''
day += self.day_mount_sum(num=month)
new_time = self.time + timedelta(days=day, hours=hours, minutes=minutes, seconds=seconds)
return new_time
使用及输出情况。
if __name__ == "__main__":
T1 = GetNewTime()
T2 = GetNewTime('2019-08-17 17:14:39')
# 月 天 时 分 秒
test1 = T1.new_times(month=1, day=0, hours=0, minutes=0, seconds=0)
test2 = T2.new_times(month=1, day=2, hours=1, minutes=0, seconds=0)
print(test1)
print(test2)
输出:
2020-07-01 22:10:28
2019-09-19 18:14:39
总结
以上是云服务器包年包月的简单例子,它可以根据云服务器创建、续费等情况进行到期时间的校验。如有特别需求可在此基础上增加方法来实现,如:根据创建、续费时长赠送不同的时间优惠等……
睿江云官网链接:www.eflycloud.com