云服务器

自动化测试之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

上一篇: 无

微信关注

获取更多技术咨询