web自动化测试实战之批量执行测试用例
一、实战之分离测试固件
在UI 自动化测试中,不管编写哪个模块的测试用例,都需要首先在测试类中编写测试固件初始化WebDriver类及打开浏览器,执行登录,才能进行下一步业务逻辑的操作,测试用例执行完成后还需要关闭浏览器,这部分的代码如下: import unittest from selenium import webdriver import time, os class InitTest(unittest.TestCase): @classmethod def setUpClass(cls): #print("start!进入初始化环境") cls.dr = webdriver.Chrome() cls.dr.maximize_window() #print("测试浏览器为:{0}".format(cls.dr.name)) time.sleep(1) ulr1 = "http://*******.****.com.cn" @classmethod def tearDownclass(cls): cls.dr.quit()
在每一个测试类中都要编写以上代码,因此需要重复编写很多代码。是否可以把测试固件这部分代码分离出去,测试类直接继承分离出去的类呢?我们把测试固件分离到项目中,新建文件名称为 public_XF_login.py 类名为:InitTest import unittest from selenium import webdriver import time, os class InitTest(unittest.TestCase): @classmethod def setUpClass(cls): #print("start!进入初始化环境") cls.dr = webdriver.Chrome() cls.dr.maximize_window() #print("测试浏览器为:{0}".format(cls.dr.name)) time.sleep(1) ulr1 = "http://********.com.cn" #(u"访问测试环境后台管理系统") cls.dr.get(ulr1) #print("测试地址为:{0}".format(cls.dr.current_url)) time.sleep(1) xpath = cls.dr.find_element_by_xpath #点击账号登录,输入用户名+密码 xpath("//*[@id="app"]/p/p[2]/p[2]/p/p[1]/p").click() time.sleep(1) # 捕捉账号文本栏,进行输入账号 xpath("//*[@id="app"]/p/p[2]/p[2]/p/form/p[1]/input").send_keys(u"********") time.sleep(1) # 捕捉密码文本栏,进行输入密码 xpath("//*[@id="app"]/p/p[2]/p[2]/p/form/p[2]/input").send_keys(u"*******") time.sleep(1) #点击登录 xpath("//*[@id="app"]/p/p[2]/p[2]/p/form/p[3]/input").click() @classmethod def tearDownclass(cls): cls.dr.quit()
from test_python.public_XF_login import InitTest 在需要引用该类的文件先进行引用该类,测试类进行继承InitTest ,继承后,在测试类中直接编写要执行的测试用例,例如(该2条case是小编实际项目的自动化代码,各位可以也拿)case001_验证登录是否成功,代码如下: # -*-coding=utf-*- import time import unittest from test_python.public_XF_login import InitTest class Admin(InitTest): def testCase_001(cls): """验证用户是否登录成功""" cls.assertEqual("http://********.com.cn/#/", cls.dr.current_url) time.sleep(1) cls.dr.quit() if __name__ == "__main__": unittest.main(verbosity=2)
from test_python.public_XF_login import InitTest 在需要引用该类的文件先进行引用该类,测试类进行继承 InitTest ,继承后,在测试类中直接编写要执行的测试用例,例如case002_验证登录是否成功,代码如下: # coding=utf-8 import time import unittest from test_python.public_XF_login import InitTest class Admin(InitTest): def testCase_002(cls): """进入门店评分报表页面_验证门店查看明细功能""" xpath = cls.dr.find_element_by_xpath time.sleep(2) #进入门店评分报表页面 xpath("/html/body/section/section/aside/ul/li[3]/span").click() time.sleep(1) #刷新门店评分报表页 cls.dr.refresh() time.sleep(5) #点击列表第一页,第五行门店的查看按钮,进入评分信息详情" xpath("/html/body/section/section/section/main/p[2]/p/p/p[2]/p[2]/p[1]/p[3]/table/tbody/tr[5]/td[10]/p/button/span").click() #断言门店详情页面制定元素是否展示的为神秘访客 判断页面是否成功跳转到详情页 text = xpath("/html/body/section/section/section/main/p[2]/p/p/p[2]/p[2]/p/p[1]/p[1]/p[1]").text cls.assertEqual(u"神秘顾客", text) time.sleep(1) cls.dr.quit() #Case_002执行完毕关闭浏览器 if __name__ == "__main__": unittest.main(verbosity=2)
注解:首先需要导入public_XF_login.py 模块中的InitTest 类,测试类 Admin 继承InitTest 类。这样执行测试类后,会先执行setUpClass 方法,再执行具体的测试用例,最后执行tearDownclass 方法。python 的类继承的方式解决了在每个测试类中都需要编写测试固件的问题。把测试固件分离出去后,即使后期测试地址发生变化,只需要修改public_XF_login.py 模块中InitTest 类中的 url 地址即可,而不需要在每个测试类修改测试地址,减少了编写重复性代码的开销。分离了测试固件,运行以上代码,对应的测试用例执行通过。 二、实战之批量执行测试用例
在实际测试中,常常需要批量执行测试用例。例如,在testCase 包中有 case001_login.py 和 case002_Score_report.py 两个文件,下面批量执行这两个模块的测试用例。创建新文件 test_case_suite.py ,在 test_case_suite.py 文件中编写批量执行的代码,测试用例的代码跟上面文件中的一致,目录大概如下
接着我们在创建 AllTest.py 我们来看看如何进行调用全部的测试用例,如下代码就可以实现 #-*-coding=utf-8-*- import unittest import os def AllTest(): """获取所有的测试模块""" suite=unittest.TestLoader().discover( start_dir=os.path.dirname("F:python3python_codetest_case_suite"), pattern="case*.py", top_level_dir=None) return suite if __name__ == "__main__": unittest.TextTestRunner(verbosity=2).run(AllTest())
注解:在以上代码中,批量获取测试模块用到的方法是 discover。discover方法有三个参数,第一个参数 start_dir是测试模块的路径,存放在testCase包中;第二个参数pattern用来获取testCase包中所有以test开头的模块文件,会获取到test_baidu.py和test_sina.py;第三个参数 top_level_dir 在调用的时候直接给默认值None。我们执行 AllTest.py 文件执行代码如下,这就是批量化执行case.
后面我会在基于这集中测试方法上,补充一些可优化的点,最近工作比较繁忙,会抽空给大家分享好文,持续分享持续输出,希望本文对你们会有所帮助,也欢迎大家支持小编,进行分享,广而告之.
最后我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块
需要的私信我关键字【555】免费获取哦 注意关键字是:555
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
腾讯2022年游戏盗号量上涨300DDoS攻击全行业最高12月16日,2022游戏安全行业峰会上,腾讯安全联合腾讯游戏安全广东省游戏产业协会发布了2022游戏安全白皮书。白皮书指出,2022年日均中马量级较2021年上涨逾300,单日最
上海18所高校的135支队伍比拼工程实践与创新能力生活垃圾智能分类。上海交大供图中新网上海12月18日电(王佳莹高璐许婧)新能源车重走长征路智能助力垃圾分类包括上海交通大学同济大学上海大学上海师范大学上海海事大学等在内的18所上海
核聚变火箭可以使人类成为星际物种目前,人类在寻求成为行星际物种的过程中受到交通问题的限制。寻求替代污染能源(例如燃烧石化燃料)的绿色技术的进步也在航天领域取得了进展。核聚变被认为是我们能源问题的明确答案,是所有能
时间定了!油价即将调整12月19日24时,国内新一轮成品油调价窗口将开启。本轮调价将是2022年国内油价最后一调。继上轮成品油价格两连跌后,机构预计,本轮成品油价格或继续下跌,国内油价在年末将呈三连跌走
油价即将调整!今年最后一次这个周末,想要加油的朋友一定等一等!国内油价有可能继续下调。12月19日(下周一)24时,国内新一轮成品油调价窗口即将开启,这也是2022年的最后一次调价窗口。此前,国内油价已经二
徐石破解数字化转型之困数字化转型升级的本质是高效运营。文中国企业家记者邓双琳编辑李薇头图来源中企图库12月10日11日,由中国企业家杂志社主办的第二十届中国企业领袖年会暨第二十二届中国企业未来之星年会隆
2023年养老金还会继续调整吗?有没有人能涨到500元以上?不知不觉间,2023年即将到来。很多退休老人关注明年的养老金还会增长吗?如果继续增长的话,能涨多少呢?退休老人能不能涨到500元?让我们仔细分析。2023年的养老金会继续增长。每年
在阿坝,get阿凡达水之道同款美景!12月16日影迷们期盼已久的阿凡达水之道正式上映收获了火爆的人气影片中神秘蔚蓝深海奇幻瑰丽的风光每一帧都是绝美大片让人心驰神往无限憧憬你知道吗?影片中的潘多拉星美轮美奂的景致其实离
(社会)第24届哈尔滨冰雪大世界试开园当日,第24届哈尔滨冰雪大世界迎来试开园。12月17日,游客在哈尔滨冰雪大世界园区游览(无人机照片)。新华社记者王松摄12月17日,游客在哈尔滨冰雪大世界园区游览拍照。新华社记者王
这么近那么美周末到河北沕沕水晶莹剔透的冰瀑世界流光溢彩的童话乐园这么近那么美周末到河北头条带你乐享河北河北惠民演出季沕沕水随着天气的逐渐降温,沕沕水的冰瀑已具备观赏规模。到沕沕水观赏白天晶莹剔透的冰瀑大世界,领略晚上流光溢彩的童话乐园。观赏美景
名记称湖人有机会得到比尔威少两首轮报价奇才造新三巨头冲冠北京时间12月18日,名记ZachLowe在节目上表示,湖人有机会得到奇才球星比尔,而威少两个首轮是他们可以尝试的报价筹码。此前,湖人跟队记者JovanBuha表示,如果杜兰特比尔