游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

软件测试Pytest的必会技巧(一)

  pytestsetup和teardown
  我们在使用selenium执行web自动化测试的时候,当我们需要执行多条测试用例时,执行一条用例就启动一次浏览器显然效率就太低了,我们需要一次启动浏览器,执行多条用例。pytest可以满足我们的需求吗?答案是pytest的setup和teardown完美匹配我们的需求,unittest有的它有,unittest没有的它也有!作用范围模块级(setupmoduleteardownmodule)开始于模块始末,全局的函数级(setupfunctionteardownfunction)只对函数用例生效(不在类中)类级(setupclassteardownclass)只在类中前后运行一次(在类中)方法级(setupmethodteardownmethod)开始于方法始末(在类中类里面的(setupteardown)运行在调用方法的前后函数级
  setupfunctionteardownfunction
  每个用例开始和结束调用一次testdemo。pycoding:utf8importpytest函数式defsetupfunction():print(setupfunction:每个用例开始前都会执行)defteardownfunction():print(teardownfunction:每个用例结束后都会执行)deftestone():print(正在执行testone)xthisasserthinxdeftesttwo():print(正在执行testtwo)xhelloasserthasattr(x,check)deftestthree():print(正在执行testthree)ahellobhelloworldassertainbifnamemain:pytest。main(〔s,testfixt。py〕)
  运行结果:testsessionstartscollecting。。。collected3itemstestdemo。py::testonesetupfunction:每个用例开始前都会执行PASSED〔33〕正在执行testoneteardownfunction:每个用例结束后都会执行testdemo。py::testtwosetupfunction:每个用例开始前都会执行FAILED〔66〕正在执行testtwotestdemo。py:19(testtwo)deftesttwo():print(正在执行testtwo)xhelloasserthasattr(x,check)EAssertionError:assertFalseEwhereFalsehasattr(hello,check)testdemo。py:23:AssertionErrorteardownfunction:每个用例结束后都会执行testdemo。py::testthreesetupfunction:每个用例开始前都会执行PASSED〔100〕正在执行testthreeteardownfunction:每个用例结束后都会执行1failed,2passedin0。04s
  从结果可以看出用例执行顺序:setupfunction》用例1》teardownfunction,setupfunction》用例2》teardownfunction,setupfunction》用例3》teardownfunction
  注:加上s参数是为了显示用例的打印信息,便于查看。setupmoduleteardownmodule
  setupmodule是所有用例开始前只执行一次,teardownmodule是所有用例结束后只执行一次importpytest函数式defsetupmodule():print(setupmodule:整个。py模块只执行一次)print(比如:所有用例开始前只打开一次浏览器)defteardownmodule():print(teardownmodule:整个。py模块只执行一次)print(比如:所有用例结束只最后关闭浏览器)defsetupfunction():print(setupfunction:每个用例开始前都会执行)defteardownfunction():print(teardownfunction:每个用例结束前都会执行)deftestone():print(正在执行testone)xthisasserthinxdeftesttwo():print(正在执行testtwo)xhelloasserthasattr(x,check)deftestthree():print(正在执行testthree)ahellobhelloworldassertainbifnamemain:pytest。main(〔s,testdemo。py〕)
  从运行结果可以看到setupmodule和teardownmodule只执行了一次testsessionstartscollecting。。。collected3itemstestdemo。py::testonesetupmodule:整个。py模块只执行一次比如:所有用例开始前只打开一次浏览器setupfunction:每个用例开始前都会执行PASSED〔33〕正在执行testoneteardownfunction:每个用例结束前都会执行testdemo。py::testtwosetupfunction:每个用例开始前都会执行FAILED〔66〕正在执行testtwotestdemo。py:27(testtwo)deftesttwo():print(正在执行testtwo)xhelloasserthasattr(x,check)EAssertionError:assertFalseEwhereFalsehasattr(hello,check)testdemo。py:31:AssertionErrorteardownfunction:每个用例结束前都会执行testdemo。py::testthreesetupfunction:每个用例开始前都会执行PASSED〔100〕正在执行testthreeteardownfunction:每个用例结束前都会执行teardownmodule:整个。py模块只执行一次1failed,2passedin0。04s
  注:setupfunctionteardownfunction和setupmoduleteardownmodule这四种方法是可以任意组合的,用一个和多个都可以类和方法
  setupteardown和unittest里面的setupteardown是一样的功能,setupclass和teardownclass等价于unittest里面的setupClass和teardownClasscoding:utf8testfixtclass。pycoding:utf8importpytest类和方法classTestCase():defsetup(self):print(setup:每个用例开始前执行)defteardown(self):print(teardown:每个用例结束后执行)defsetupclass(self):print(setupclass:所有用例执行之前)defteardownclass(self):print(teardownclass:所有用例执行之前)defsetupmethod(self):print(setupmethod:每个用例开始前执行)defteardownmethod(self):print(teardownmethod:每个用例结束后执行)deftestone(self):print(正在执行testone)xthisasserthinxdeftesttwo(self):print(正在执行testtwo)xhelloasserthasattr(x,check)deftestthree(self):print(正在执行testthree)ahellobhelloworldassertainbifnamemain:pytest。main(〔s,testdemo。py〕)
  运行结果testfixtclass。pysetupclass:所有用例执行之前setupmethod:每个用例开始前执行setup:每个用例开始前执行正在执行testone。teardown:每个用例结束后执行teardownmethod:每个用例结束后执行setupmethod:每个用例开始前执行setup:每个用例开始前执行正在执行testtwoFteardown:每个用例结束后执行teardownmethod:每个用例结束后执行setupmethod:每个用例开始前执行setup:每个用例开始前执行正在执行testthree。teardown:每个用例结束后执行teardownmethod:每个用例结束后执行teardownclass:所有用例执行之前
  从结果看出,运行的优先级:setupclass》setupmethod》setup》用例》teardown》teardownmethod》teardownclass
  备注:这里setupmethod和teardownmethod的功能和setupteardown功能是一样的,一般二者用其中一个即可。函数和类混合
  如果一个。py的文件里面既有函数用例又有类和方法用例,运行顺序又是怎样的呢?coding:utf8importpytest类和方法defsetupmodule():print(setupmodule:整个。py模块只执行一次)print(比如:所有用例开始前只打开一次浏览器)defteardownmodule():print(teardownmodule:整个。py模块只执行一次)print(比如:所有用例结束只最后关闭浏览器)defsetupfunction():print(setupfunction:每个用例开始前都会执行)defteardownfunction():print(teardownfunction:每个用例结束前都会执行)deftestone():print(正在执行testone)xthisasserthinxdeftesttwo():print(正在执行testtwo)xhelloasserthasattr(x,check)classTestCase():defsetupclass(self):print(setupclass:所有用例执行之前)defteardownclass(self):print(teardownclass:所有用例执行之前)deftestthree(self):print(正在执行testthree)xthisasserthinxdeftestfour(self):print(正在执行testfour)xhelloasserthasattr(x,check)ifnamemain:pytest。main(〔s,testfixtclass。py〕)
  运行结果:testfixtclass。pysetupmodule:整个。py模块只执行一次比如:所有用例开始前只打开一次浏览器setupfunction:每个用例开始前都会执行正在执行testone。teardownfunction:每个用例结束前都会执行setupfunction:每个用例开始前都会执行正在执行testtwoFteardownfunction:每个用例结束前都会执行setupclass:所有用例执行之前正在执行testthree。正在执行testfourFteardownclass:所有用例执行之前teardownmodule:整个。py模块只执行一次
  从运行结果看出,setupmoduleteardownmodule的优先级是最大的,然后函数里面用到的setupfunctionteardownfunction与类里面的setupclassteardownclass互不干涉。

第二十四届中国(晋江)国际鞋业暨第七届国际体博会正式开幕2023年4月19日22日,由中国贸促会、中国轻工业联合会、中国体育用品业联合会主办,泉州市人民政府、福建省体育局、福建省贸促会、中国皮革协会、中国皮革制鞋研究院协办,晋江市人……荣耀熊军民小米9续航远落后荣耀V20,友商缺乏对科学的敬畏心IT之家2月22日消息荣耀业务部副总裁熊军民在今天下午发了一条微博,回应了昨天小米产品总监王腾转发的外媒GSMarena对于小米9的续航测试,并表示搞技术的人,对科学常识最基础……Realme3发布时间公布3月4日,后壳采用星空图案感谢IT之家网友cheekian的线索投递!IT之家2月23日消息Realme已在Twitter上宣布将于3月4日举行新品发布会,届时将推出Realme3新机。官方……荣耀公布新的摄影技术4800万AI超清摄影首发索尼IMX58IT之家12月10日消息三天前,荣耀官方微博发布了一则悬疑海报,技惊四座12。10香港不见不3,小字标注手机技术创新,我们有一些新的做法,欲言又止,引发众多猜测难不成荣耀是要发……5199元上市新低,索尼XperiaXZ3开启双12大促IT之家12月10日消息索尼XperiaXZ3今日开启双12大促,降至上市新低5199元。6期免息,送蓝牙耳机。索尼首款2K分辨率OLED屏幕,AmbientFlow设计,全方……穿卫衣多学学谭松韵,怎么搭配都很美,低调穿搭更实用在网上教大家穿搭卫衣的人很多,不过随着卫衣的款式和图案被设计得越来越复杂,想要将卫衣穿出更加时髦,仿佛只要选择设计的奇怪的卫衣就好。其实想要让自己的服装搭配变得更有特色,……华为MateX折叠手机开启EMUI10公测IT之家1月22日消息华为EMUI官方微博发消息称,MateXEMUI10公测开启。用户可打开服务App服务升级尝鲜,即可进行升级。需要注意的是,MateX升级之前需将服……华为Mate30系列5G版手机每分钟销售额1亿元IT之家11月1日消息华为Mate30系列5G手机于今日10时08分正式开售,售价4999元起。华为商城官博发文表示,华为Mate30系列5G版华为商城开售至10:15,每1分……华为Mate30系列推送EMUI10。0。0。135更新修复感谢IT之家网友软媒用户1822697的线索投递!IT之家10月24日消息据IT之家网友投稿,华为Mate30系列近日推送了EMUI10。0。0。135更新,修复了此前网……德国柏林秋意渐浓10月27日,在德国首都柏林,人们在街头漫步。柏林近日秋意渐浓,景色宜人。新华社记者任鹏飞摄这是10月28日在德国首都柏林拍摄的秋景。柏林近日秋意渐浓,景色宜人。新华社记……最古老!这是伽马射线暴,它竟是一块太空垃圾伽马射线暴?太空垃圾!太空垃圾有风险,宇宙探索需谨慎导语:在对已知最古老星系的观测中,突然出现的闪光现象,结果却相当令人失望。有时霎那的火花可能只是个偶然……苹果iPhone13活动价仅需5549元!不买后悔死文薛璐遥责编吕东兴总编唐迪手机是日常生活中必不可少的电子产品,手机市场上,苹果手机性能好但价格很高,所以苹果手机价格低且质量在线的产品会更加吸引购买者。今天要推荐的产品是……
预装立功谷歌又一款应用下载量破10亿IT之家12月23日消息据外媒AndroidPolice消息,谷歌全家桶系列应用日前又有一款应用在GooglePlay达到了10亿下载量级别。这款应用就是GoogleDuo,它……厨房净水器十大品牌,厨房净水器科普厨房净水器十大品牌,冰尊厨房净水器第一实至名归,水质的好坏直接影响到我们的健康。对于一些小区出现的水污染问题难免让人不担心我们日常饮用的自来水的安全问题,我们可以参考下文的厨房……外媒诺基亚两款新功能机价格曝光IT之家8月25日消息据外媒报道,诺基亚两款新功能机诺基亚110(2019)和诺基亚2720(2019)的价格曝光。viaNokiapoweruser丨老款诺基亚2720……北京月嫂十大排名有哪些北京月嫂十大排名有哪些非常感谢妇贵宝月嫂赵老师,推荐的李玉凤阿姨整个月子期间过得非常的舒心,真的舍不得李阿姨下户。北京月嫂十大排名有哪些北京月嫂公司排名……华中科技大学管理学院院长杨治数字化时代,企业的变与不变所有企业都会面临着从无到有,从有到大,从大到强的过程。从0到1和从1到N所面对的挑战是不一样的。从0到1最重要的是生存问题,找到几个核心客户,解决最基本的产品问题。但从1到N时……神速!HMD公布诺基亚手机安卓10升级计划感谢IT之家网友戦場原荡漾的线索投递!IT之家8月22日消息在今天的推文中,HMDGlobalCPOJuhoSarvikas宣布推出诺基亚手机Android10升级路线图……国内首款AI防骚扰电话助手发布,可代接电话4月2日消息,我国智能语音领域首款针对个人用户的AI防骚扰电话助手芒小蜜在京发布。这款产品可以代替个人用户接听电话,并进行记录,让用户决定是否回拨。据介绍,芒小蜜能够在用……华为智慧屏65英寸上架京东预约渲染图曝光,搭载鸿蒙OSIT之家9月9日消息9月19日晚上20点,除了Mate30系列手机发布之外,华为智慧屏也将一起在德国慕尼黑发布。华为官方宣布,华为智慧屏真的来了,今天上午10点08分正式开启预……独家专访罗斌舞蹈界这样助力中国花样滑冰冬奥夺金中国舞协分党组书记、驻会副主席罗斌主持一起向未来冬奥英雄走进中国文艺家之家交流分享会(中国舞协供图)让舞蹈与花滑心手相牵,一起向未来专访中国舞协分党组书记、……直降200元小米8青春版(6GB128GB)版手机1799元IT之家10月16日消息小米现已开启小米青春出游季活动,小米8标准版全系列降价200元,小米8SE仅售1599,全场数码百货基本都降至近期好价:点此进入小米会场。小米8青……生活路上酸甜苦辣的说说,人生酸甜苦辣感悟的句子,说到心坎高质量5万条经典文案资料库,关注我,让发朋友圈配文案,写动态,写心情,上热门更简单。如果有那句话触动你,就复制下来,粘贴到评论区,释放你的心声吧,任何尝试勇敢迈出第一步都……5399元,赠1199元耳机索尼XperiaXZ3开启新品预IT之家10月19日消息索尼XperiaXZ3今日开启预定,售价5399元。定金100元,11月1日付尾款,11月5日发货,6期免息,波尔多红版本送1199元索尼MDRH600……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网