selenium-数据驱动应用(parameterized、DDT)_第1页
selenium-数据驱动应用(parameterized、DDT)_第2页
selenium-数据驱动应用(parameterized、DDT)_第3页
selenium-数据驱动应用(parameterized、DDT)_第4页
selenium-数据驱动应用(parameterized、DDT)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

selenium-数据驱动应⽤(parameterized、DDT)1.parameterizedparameterized是python的⼀个参数化库,同时⽀持unittest、nose、pytest单元测试框架importunittestimporttimefromseleniumimportwebdriverfromparameterizedimportparameterizedclassTestBaidu(unittest.TestCase):#参数化后,要将setup和teardown修改为类⽅法,不然每个参数被认为⼀个测试⽤例,浏览器会随之每次都打开关闭@classmethoddefsetUpClass(cls):cls.driver=webdriver.Chrome()cls.base_url=''defbaidu_search(self,search_key):self.driver.get(self.base_url)self.driver.find_element_by_id('kw').send_keys(search_key)self.driver.find_element_by_id('su').click()time.sleep(3)#通过parameterized实现参数化@parameterized.expand([#每个元组都被认为是⼀条测试⽤例。测试⽤例中,通过参数来取每个元组中的数据('case1','selenium'),('case2','unittest'),('case3','parameterized'),])deftest_search(self,name,search_key):#name对应元组中的第⼀列数据,search_key对应第⼆列self.baidu_search(search_key)self.assertEqual(self.driver.title,search_key+'_百度搜索')@classmethoddeftearDownClass(cls):cls.driver.quit()if__name__=='__main__':unittest.main(verbosity=2)#verbosity设置为2,表⽰输出更详细的⽇志运⾏结果如下:test_search_0_case1(__main__.TestBaidu)...oktest_search_1_case2(__main__.TestBaidu)...oktest_search_2_case3(__main__.TestBaidu)...ok----------------------------------------------------------------------Ran3testsin15.239sOKtest_search是测试⽤例的名称,参数化会⾃动加上0、1、2⽤来区分每条测试⽤例,元组中的case1后缀在名称上2.DDTDDT(data-driventests)是针对unittest单元测试框架设计的扩展库。允许使⽤不同的测试数据来运⾏⼀个测试⽤例,并将其展⽰为多个测试⽤例。fromseleniumimportwebdriverimportunittestimporttimefromddtimportddt,data,file_data,unpack@ddt#测试类需要通过@ddt装饰器进⾏装饰classTestBaidu(unittest.TestCase):@classmethoddefsetUpClass(cls):cls.driver=webdriver.Chrome()defsearch_baidu(self,keyword):self.driver.get('')self.driver.find_element_by_id('kw').send_keys(keyword)self.driver.find_element_by_id('su').click()time.sleep(3)#ddt提供了不同形式的参数化@data(['case1','selenium'],['case2','python'])#列表@unpackdeftest_baidu1(self,name,keyword):print('第⼀组测试⽤例',name)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@data(('case1','selenium'),('case2','pyton'))#元组@unpackdeftest_baidu2(self,name,keyword):print('第⼆组测试⽤例',name)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@data({'keyword':'selenium'},{'keyword':'python'})#字典@unpackdeftest_baidu3(self,keyword):print('第三组测试⽤例',keyword)self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')@classmethoddeftearDownClass(cls):cls.driver.quit()if__name__=='__main__':unittest.main(verbosity=2)DDT同样⽀持json⽂件的读取,让我们更关注于数据⽂件的内容,及在测试⽤例中的使⽤。⽽不需要关⼼数据⽂件是如何被读取进来的keyword.json使⽤json⽂件参数化测试⽤例@file_data('./data/keyword.json')#读取json⽂件deftest_baidu(self,keyword):self.search_baidu(keyword)self.assertEqual(self.driver.title,keyword+'_百度搜索')测试结果如下:test_baidu_00001_case1(__main__.TestBaidu)test_baidu_00001_case1...oktest_baidu_00002_case2(__main__.TestBaidu)test_baidu_00002_case2...oktest_baidu_00003_case3(__main__.TestBaidu)test_baidu_00003_case3...FAILps:参数化中使⽤全局变量需注意,如果全局变量的赋值和使⽤在同⼀个⽂件中,则不能使⽤原因:代码执⾏顺序执⾏时,先⾛parameterized中的代码,后⾛业务代码,所以全局变量的值在赋值之前已经获取,为空,会报错,如下123为执⾏顺序:classTest_0001(TestBase):deftest_1(self):phone=123set_assistant_phone_id(phone)#2classTest_0011(TestBase):@parameterized.expand([('随机⼿机号',get_assistant_phone_id())#1先执⾏。还未赋值,所以获取不到数据])deftest

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论