一、实战之分离测试固件 在UI自动化测试中,不管编写哪个模块的测试用例,都需要首先在测试类中编写测试固件初始化WebDriver类及打开浏览器,执行登录,才能进行下一步业务逻辑的操作,测试用例执行完成后还需要关闭浏览器,这部分的代码如下:importunittestfromseleniumimportwebdriverimporttime,osclassInitTest(unittest。TestCase):classmethoddefsetUpClass(cls):print(start!进入初始化环境)cls。drwebdriver。Chrome()cls。dr。maximizewindow()print(测试浏览器为:{0}。format(cls。dr。name))time。sleep(1)ulr1http:。。com。cnclassmethoddeftearDownclass(cls):cls。dr。quit() 在每一个测试类中都要编写以上代码,因此需要重复编写很多代码。是否可以把测试固件这部分代码分离出去,测试类直接继承分离出去的类呢?我们把测试固件分离到项目中,新建文件名称为publicXFlogin。py类名为:InitTestimportunittestfromseleniumimportwebdriverimporttime,osclassInitTest(unittest。TestCase):classmethoddefsetUpClass(cls):print(start!进入初始化环境)cls。drwebdriver。Chrome()cls。dr。maximizewindow()print(测试浏览器为:{0}。format(cls。dr。name))time。sleep(1)ulr1http:。com。cn(u访问测试环境后台管理系统)cls。dr。get(ulr1)print(测试地址为:{0}。format(cls。dr。currenturl))time。sleep(1)xpathcls。dr。findelementbyxpath点击账号登录,输入用户名密码xpath(〔idapp〕pp〔2〕p〔2〕pp〔1〕p)。click()time。sleep(1)捕捉账号文本栏,进行输入账号xpath(〔idapp〕pp〔2〕p〔2〕pformp〔1〕input)。sendkeys(u)time。sleep(1)捕捉密码文本栏,进行输入密码xpath(〔idapp〕pp〔2〕p〔2〕pformp〔2〕input)。sendkeys(u)time。sleep(1)点击登录xpath(〔idapp〕pp〔2〕p〔2〕pformp〔3〕input)。click()classmethoddeftearDownclass(cls):cls。dr。quit() fromtestpython。publicXFloginimportInitTest在需要引用该类的文件先进行引用该类,测试类进行继承InitTest,继承后,在测试类中直接编写要执行的测试用例,例如(该2条case是小编实际项目的自动化代码,各位可以也拿)case001验证登录是否成功,代码如下:codingutfimporttimeimportunittestfromtestpython。publicXFloginimportInitTestclassAdmin(InitTest):deftestCase001(cls):验证用户是否登录成功cls。assertEqual(http:。com。cn,cls。dr。currenturl)time。sleep(1)cls。dr。quit()ifnamemain:unittest。main(verbosity2) fromtestpython。publicXFloginimportInitTest在需要引用该类的文件先进行引用该类,测试类进行继承InitTest,继承后,在测试类中直接编写要执行的测试用例,例如case002验证登录是否成功,代码如下:codingutf8importtimeimportunittestfromtestpython。publicXFloginimportInitTestclassAdmin(InitTest):deftestCase002(cls):进入门店评分报表页面验证门店查看明细功能xpathcls。dr。findelementbyxpathtime。sleep(2)进入门店评分报表页面xpath(htmlbodysectionsectionasideulli〔3〕span)。click()time。sleep(1)刷新门店评分报表页cls。dr。refresh()time。sleep(5)点击列表第一页,第五行门店的查看按钮,进入评分信息详情xpath(htmlbodysectionsectionsectionmainp〔2〕ppp〔2〕p〔2〕p〔1〕p〔3〕tabletbodytr〔5〕td〔10〕pbuttonspan)。click()断言门店详情页面制定元素是否展示的为神秘访客判断页面是否成功跳转到详情页textxpath(htmlbodysectionsectionsectionmainp〔2〕ppp〔2〕p〔2〕pp〔1〕p〔1〕p〔1〕)。textcls。assertEqual(u神秘顾客,text)time。sleep(1)cls。dr。quit()Case002执行完毕关闭浏览器ifnamemain:unittest。main(verbosity2) 注解:首先需要导入publicXFlogin。py模块中的InitTest类,测试类Admin继承InitTest类。这样执行测试类后,会先执行setUpClass方法,再执行具体的测试用例,最后执行tearDownclass方法。python的类继承的方式解决了在每个测试类中都需要编写测试固件的问题。把测试固件分离出去后,即使后期测试地址发生变化,只需要修改publicXFlogin。py模块中InitTest类中的url地址即可,而不需要在每个测试类修改测试地址,减少了编写重复性代码的开销。分离了测试固件,运行以上代码,对应的测试用例执行通过。二、实战之批量执行测试用例 在实际测试中,常常需要批量执行测试用例。例如,在testCase包中有case001login。py和case002Scorereport。py两个文件,下面批量执行这两个模块的测试用例。创建新文件testcasesuite。py,在testcasesuite。py文件中编写批量执行的代码,测试用例的代码跟上面文件中的一致,目录大概如下 接着我们在创建AllTest。py我们来看看如何进行调用全部的测试用例,如下代码就可以实现codingutf8importunittestimportosdefAllTest():获取所有的测试模块suiteunittest。TestLoader()。discover(startdiros。path。dirname(F:python3pythoncodetestcasesuite),patterncase。py,topleveldirNone)returnsuiteifnamemain:unittest。TextTestRunner(verbosity2)。run(AllTest()) 注解:在以上代码中,批量获取测试模块用到的方法是discover。discover方法有三个参数,第一个参数startdir是测试模块的路径,存放在testCase包中;第二个参数pattern用来获取testCase包中所有以test开头的模块文件,会获取到testbaidu。py和testsina。第三个参数topleveldir在调用的时候直接给默认值None。我们执行AllTest。py文件执行代码如下,这就是批量化执行case。 后面我会在基于这集中测试方法上,补充一些可优化的点,最近工作比较繁忙,会抽空给大家分享好文,持续分享持续输出,希望本文对你们会有所帮助,也欢迎大家支持小编,进行分享,广而告之。 最后我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块 需要的私信我关键字【555】免费获取哦注意关键字是:555 全套软件测试自动化测试教学视频 300G教程资料下载【视频教程PPT项目源码】 全套软件测试自动化测试大厂面经