DJANGO+PYTHON+SELENIUM实现版本发布后,调用自动化脚本来验证发布发布环境

背景:公司在发布版本的时候,需要维护几百台服务器,往每个服务器上面部署相同的应用。发布完成后,需要测试对每个环境进行相同的环境,目前的测试验证是手工进行的。最近公司要实现这么个功能,让我自动化处理环境验证,并且要保证效率(就是并发咯),执行完成后把结果发送给相关人员。发布版本的时候,会存在分批次发布的问题(几百台服务器分几天发布),这样执行验证的时候,需要预先知道运维到底发布了哪些环境。

需要实现的功能:1、实现自动话验证  2、接收运维传递的服务器参数,解析为服务器的访问url  3、环境太多,线性执行效率太低,考虑多线程 4、ui自动化存在不稳定问题,第一次失败的环境需要重新执行  5、执行结果通过邮件发送给相关人员。

理清需要实现的功能后,跟运维沟通,运维传递服务器信息的时候 是以url格式传递给我,服务器信息拼接在url后面,以逗号分割。我这边部署一个web服务,接收到url请求后,解析url,把服务器信息转变为url信息,解析后的url信息传递给执行脚本。解决这个后,基本就没什么问题了


多线程并发。使用了threading

        threads=[]
        nloops=range(len(loops))
        count=0
        drs=[]
        urls=[]
        for i in range(len(loops)):
            login(i,drs,loops,count,urls)
            count=count+1
        for  i in drs:
            t=threading.Thread(target=loop,args=(i,))
            threads.append(t)
        for i in nloops:
            threads[i].start()
        for i in nloops:
            threads[i].join()

关于threading控制线程数的问题,因为服务器有几百台,如果不控制线程数量,性能方面会有问题,所以在线程外面,切割服务器分组,每次只多线程运行一个组的测试,执行完毕后再执行下一个组。服务器分组的格式为

def splist(l,s):
    "将list等分 l"
    return[l[i:i+s] for i in range(len(l)) if i%s==0]

剩下来就是个人的盲点知识了,部署web服务器,运维传递请求参数,我接收后执行。翻了下django,部署了一个服务,如果需要其它pc访问,在启动服务器的时候  设置服务器ip为0.0.0.0:8000

《待续》。。。。。。。。。。。



猜你喜欢

转载自blog.csdn.net/zhouxuan623/article/details/78928208