幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

Flask像Jenkins一样构建自动化测试任务

  flask这个框架很轻量,做一些小工具还是可以很快上手的。
  1、自动化
  某一天你入职了一家高大上的科技公司,开心的做着软件测试的工作,每天点点点,下班就走,晚上陪女朋友玩王者,生活很惬意。
  但是美好时光一般不长,这种生活很快被女主管打破。为了提升公司测试效率,公司决定引入自动化流程,你在网上搜了一套技术方案pythonselenium,迅速写了一套自动化测试的脚本。fromseleniumimportwebdriverdeftestselenium():driverwebdriver。Firefox()driver。get(http:www。baidu。com)。。。driver。quit()。。。
  编写脚本的日子很累,你需要每天加班,而且没有加班工资。虽然如此,你也没有太多怨言,因为你能明显感觉到自己一点点掌握了自动化测试的流程,正在踏入职业发展的新阶段。这套脚本很快用于公司的主流程测试,也会在回归测试中使用。
  因为大量的重复劳动都可以用这套自动化测试脚本代替,于是你又有时间陪女朋友了,上班也可以偶尔划水了,也可以时不时瞄一瞄自己的基金有没有涨。
  当然,美好时光一般不长。在一次大改版中,前端页面发生了大量变化,你的自动化测试代码因为没有做抽象封装,基本已经不能用了。
  又可以加班了,生活又可以充实起来了。你动用了一些像PageObject的模式对代码进行了重新设计,也加入了关键字驱动,尽量让测试逻辑变成可配置的。设计完成以后,当前端页面变化时,只需要重点维护关键字表格。
  你又为公司做了一些贡献,你已经完全胜任自动化测试的工作,甚至能够带一两个小弟。他们时不时找你问一些问题,但是对于自动化的维护工作还是要靠你自己,当你请假时,这些工作只能停滞。于是公司希望你做一些改进,让功能测试人员也可以运行这些自动化测试。
  2、开始测试平台
  你看到网上有很多人提到测试平台,想着自己也可以做一个可视化平台,这样功能测试人员也可以通过在界面上进行简单的设置,就可以使用底层的自动化代码了。很快flask出现在你的视线中,你做的第一个功能就是实现类似于jenkins的构建功能。
  首先,你搭建了一个flask服务,服务启动后,你能顺利访问5000端口。fromflaskimportFlaskappFlask(name)app。run(port5000)
  然后,你配置了一个url地址,当访问这个url地址时,服务会调用一个函数,这个url和函数的绑定关系就是路由。函数的返回值可以是普通字符串,可以是json数据,也可以是html页面。app。route()defindex():showallprojectsinworkspacedirworkspacepathlib。Path(app。rootpath)workspaceprojects〔project。nameforprojectinworkspace。iterdir()〕returnrendertemplate(index。html,projectsprojects)
  上面的代码就是模仿jenkins,把自动化测试的脚本放在项目的workspace目录下,当访问根路径时,index函数就会被调用。index函数的作用就是列举workspace目录下的所有项目名,通过return展示在前端界面。具体的前端代码如下:h2展示所有的项目h2{forpinprojects}{{p}}构建{endfor}
  在页面上点击构建,程序会跳转到flask设置好的build这个url中,这个路由负责运行自动化测试的代码,他会接收用户传过来的project参数,找到在workspace目录下的项目,再执行自动化测试指令(这里统一用pytest指令)。app。route(build,methods〔get,post〕)defbuild():projectnamerequest。args。get(project)pytest。main(〔fworkspace{projectname}〕)returnbuildsuccess
  到目前为止,完整的流程是这样的:首先,在平台首页会展示所有可以构建的项目,这些项目其实就是把workspace子目录当中的目录名列举出来;然后,点击项目旁边的构建按钮,跳转到build,根据项目名称执行自动化指令,等待自动化任务执行完成,返回buildsuccess。
  3、优化
  你基本上已经实现了功能,现在功能测试人员可以通过你搭建的简易平台执行自动化命令。但是这个平台还存在一些问题:第一、没有收集到构建信息,无法查看测试之后的结果;第二、用户必须等待自行测试脚本执行完成,才能返回前端具体的结果,如果自动化测试的执行时间很长,用户会一直停在这个页面,无法做其他事情。
  你想到了并发编程,创建一个子进程单独去运行自动化测试脚本,因为子进程可以和主进程独立,所以不需要等待子进程执行完成,主进程就可以立即给前端返回结果。于是你重新编写了build函数:app。route(build)defbuild():iduuid。uuid4()。hexprojectnamerequest。args。get(project)withopen(id,modew,encodingutf8)asf:subprocess。Popen(〔pytest,fworkspace{projectname}〕,stdoutf)returnredirect(fbuildhistory{id})
  1、首先,通过uuid生成一个id号来表示这一次构建任务,之后可以通过这个id号查看此次构建的记录;
  2、通过subprocess创建子进程运行自动化任务,把输出结果保存到文件当中,文件名就是生成的id号,之后想查看构建的结果时,只需要读取这个文件当中的内容;
  3、只要子进程创建成功,马上通过redirect重定向到查看结果的url,此时并不需要等到子进程执行完就可以查看构建结果。
  查看构建结果只需要通过id读取文件中的内容返回。app。route(buildhistoryid)defbuildhistory(id):withopen(id,encodingutf8)asf:dataf。read()returndata
  4、生成器
  上面读取文件的代码有点问题。当构建重定向到buildhistrory后,此时自动化测试脚本才刚刚执行,读取文件中的内容是空的。只有当测试脚本运行,产生越来越多的运行记录,文件中才会出现更多的内容,你必须手动刷新页面才能获取这些新内容。当自动化任务执行时间很长的时候,你需要不停的刷新buildhistory页面才能获取最新的构建信息。直到子进程结束,不再有新的内容被写入文件。
  为了动态获取文件数据,你使用了生成器惰性获取数据,在buildhistory的页面加载过程中,只要运行自动化任务的子进程还在运行,就不停的读取文件内容,将它们动态的返回给前端页面。
  为了判断子进程的状态,在build的时候,把子进程的pid传给buildhistory。app。route(build,methods〔get,post〕)defbuild():iduuid。uuid4()。hexprojectnamerequest。args。get(project)withopen(id,modew,encodingutf8)asf:procsubprocess。Popen(〔pytest,fworkspace{projectname}〕,stdoutf)returnredirect(fbuildhistory{id}?pid{proc。pid})
  在查看结果时,先编写一个生成器stream,每次读取文件中100长度的数据,直到进程运行结束。除了通过构建后的重定向,你也可以手动输入id,查看历史构建记录。此时只需传id,不需要传进程名,直接读取文件中的数据。就算文件特别大,也可以通过批量加载,不至于因为同时读取大量数据给服务器造成压力。importpsutilapp。route(buildhistoryid)defbuildhistory(id):pidrequest。args。get(pid,None)defstream():fopen(id,encodingutf8)ifnotpid:whileTrue:dataf。read(100)ifnotdata:breakyielddataelse:try:procpsutil。Process(pidint(pid))except:returnnosuchpidelse:whileproc。isrunning():dataf。read(100)yielddatareturnResponse(stream())
  最后效果:
  5、总结
  一般来说,做自动化测试只需要做到第一步,有脚本可以执行,就可以代替重复劳动。做测试平台只是让脚本变得更加好用。
  但是有很多的测试平台让自动化运行起来更加复杂,要配置很多很多参数才能跑一个完整的测试用例,这似乎有点折本求末,也是很多人都在做的事情。
  本文通过flask程序实现了一个最简单的toyjenkins,辅助理解像jenkins这样的工具如何执行任务。其实像简单的构建任务,做起来也有很多问题需要解决,这些只有在遇到具体业务的时候我们才会去思考。
  希望我们做的工具都是实用的,好用的。
  文章来自https:www。cnblogs。comheniup16565781。html

baby私下聚会遭偷拍,与众多异性酒店内玩游戏,夜生活丰富不管是明星、网红,还是素人,跟朋友聚会的时候是最放松的时候了,会说出憋了很久的话,也会做出一些平日里不敢做的举动。与黄晓明离婚的baby杨颖,一直给大家的印象是淑女、御姐……华为再出大动作,打车业务将全线扩张,进军全国市场沉寂已久的网约车市场,再起波澜。以前的网约车江湖,滴滴几乎是垄断了整个市场。自2021年7月开始,稳固多年的网约车市场逐渐出现松动的迹象。此后的网约车市场,又开始了激励的……女性机器人不能生孩子,为啥却被男用户青睐?功能性是关键随着5G技术的不断发展,让大家的生活变得更加智能,无人驾驶和无人超市的出现,让大家对科技改变未来的神话变得越来越触手可及。(此处已添加小程序,请到今日头条客户端查看)今天……笑傲江湖高清服有奖调研专属图片称号等你拿亲爱滴各位少侠,感谢您对《笑傲江湖》高清服长久以来的支持和厚爱。官方团队回顾整开服1个月内的热点问题为您准备了一份问卷,希望可以通过这份问卷了解到您对游戏的真实感受,以帮……利用再生医疗研发成果,IPSA首次提出抗老新思路《美妆头条》新媒体在前不久结束的第5届进博会上,IPSA(茵芙莎)带来了年度重磅新品MEULT高能黑晶乳霜(全称:自律美肌液UL)在中国的首秀。作为资生堂集团当红的量身定……又一地官宣国企融资成本不得超821世纪经济报道记者杨志锦上海报道长沙市国资委、市财政局近日发布关于加强市属国有企业融资行为和融资担保管理的通知(以下简称通知),以加强市属国有企业融资行为管理,进一步规范融资……首次实现!达到世界领先水平来源:中国经济网项目首次实现一键启动盾构智能掘进,创新建成了以智能管控为核心,智能掘进、智能拼装、智能协同、智能诊断、智能物管为保障的盾构隧道智能建造体系近日,中国中铁在……湖人公布交易前提,利拉德正式表态,86前锋无缘帮助杜兰特北京时间12月1日,NBA常规赛已经开启第六十二天左右,其中斯玛特表示,凯尔特人拥有一个信任自己的教练意味着一切,马祖拉完全信任我,布罗格登透露,从未像在绿军这样真正成为球队一……家常菜炒米饭咸香咸香的腊肉炒饭做法:煮好米饭放凉备用2腊肉煮熟切丁备用油烧热加入蛋液滑熟捞出备用蒜苗洗净切末(头和叶分开放),火腿肠切丁,青椒切末,豆角切末5调料:……为了吸引游客,将5000条鱼冻死在这里,日本这个滑冰场为何敢美食,各类各样真的是眼花缭乱啊。国内的很多美食,看了都流口水。就简单的红烧排骨,几乎都是甜口的,但是大家知道吗?也有酸甜苦辣的。国外,也是如此,西餐,有各式各样的。一道菜可以做……江苏到2025年孕产妇抑郁症筛查率达85以上近日,《江苏省孕产期抑郁症筛查干预工作实施方案(2022年版)》印发,部署全省医疗机构全面开展孕产期抑郁症筛查干预工作,提出到2025年底,全省孕产妇对孕产期抑郁症知识知晓率达……如何面对孩子的残忍行为呢?每一片叶子都有它独有的形态。孩子之间会打架,起冲突。孩子们会捏死小虫子,折磨小动物。有时孩子的残忍行为是因为缺乏知识,有时反映的是内心的痛苦。对孩子们很残忍不是一个……
三个月没用洗发水的变化三个月前突然看到视频说坚持不用洗发水,脱发居然好了,后来就自己也尝试了一下,我来说说我这几个月的变化。我自己属于油性发质,一天不洗头就油得不行,换了各种去油的、控油的、养……你是否也曾是别人嘴里那个不懂事的孩子?每个人在成长过程中,多多少少可能都曾被别人说过不懂事。比如我就有过那么两次,别人背后说我,最后传到我妈那里。有一次是说我上初中时,和同学在街上玩,看到表舅没有打招呼……7月份国民经济运行数据出炉,为何青年失业率较高?专家推动就业图据ICphoto8月15日,国家统计局发布数据显示,7月份,我国国民经济延续恢复态势,生产供给继续恢复,就业物价总体平稳,对外贸易增势良好,民生保障有力有效。国家……内经中饮食五味,对人体气血筋骨肉的影响生活中,很多人有去看中医,吃中药的经历。服用药物期间,中医师会给患者一些饮食忌口的建议。但大多比较笼统,难以把握。今天简单概括五种味道对人体气、血、筋、骨、肉的影响,方便大家掌……超高颜值轻薄手感,后悔这三台手机没有全都要在当今这个颜值至上的时代,各大手机厂商对手机的外观设计越来越花哨,这吸引更多的消费者关注,毕竟好看的外表才有想进一步了解这一部手机的念想。那么小编今天就来给大家介绍三款超高颜值……今年又火了一种穿衣风格,叫老电影风!复古有腔调,美得高级随着现代时尚的不断发展,我们不难发现:时尚新品出了一季又一季,时尚走秀来了一场又一场,美丽的衣服和品牌的风格有很多,但是令人过目惊艳的却太少。时不时还是会怀念上世纪的复古……市值缩水1390亿,片仔癀股价闪崩!中药茅走下神坛股价8连阴,药中茅台片仔癀股价突然闪崩。9月26日,片仔癀股价再度下跌2。33,而这已经是其连续第8个交易日股价下跌了。就在8个交易日之前,片仔癀的股价最高仍在30……NBA公布周最佳小萨力压杜兰特,詹姆斯刷新历史NBA公布了上周东西部最佳球员,步行者队的小萨博尼斯和湖人队的勒布朗詹姆斯分别当选。詹姆斯上周场均得到28。3分7。5个篮板8次助攻,带领湖人取得3胜1负的战绩。萨博尼斯……以HP战66二代为例,谈谈笔记本如何升级内存硬盘前言:2019年年底,我发过一篇HP战66二代AMD版笔记本拆机升级内存的图解,并受到了不少朋友的肯定。近来有朋友问我笔记本怎么升级硬盘和内存,刚好我的笔记本硬盘也想升级……国家队入场?2家直销银行成立,马云没想到,这1天来得这么快前言现在银行也发展得越来越好,人们存进去的钱也是很安全的,同时人们享受到的便利服务也越来越多。例如掌上银行等等的发展,就可以实现人们在网上就可以办理很多的业务,省时省力。……我国新北斗芯片正式问世,美国或损失上百亿,GPS也将被慢慢取现在随着时代的发展,我们的通讯设备也在不断的更新,从之前的2G到3G到4G一直到现在的5G,发展速度很快,同时也衍生出了很多的新的功能,甚至现在很多国家都跻身于6G的研发中了,……太疯狂!绿军密谋三套交易方案,为夺冠不惜代价NBA赛季虽然已经落下帷幕,球员交易市场却开始暗流涌动,为了争夺下个赛季的总冠军,各队都在秘密谋划交易,试图补强阵容,其中最为疯狂的球队,当属刚刚在总决赛铩羽而归的NBA总亚军……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网