【selenium】HTML报告的生成,错误截图和异常捕捉,数据驱动ddt

生成HTML报告

  1. 创建存放HTML报告的文件夹
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrY2wsWr-1598006853783)(en-resource://database/10178:1)]
  2. 创建输出HTML报告
    注意生成HTML报告的时候,对它的命名,如果都叫resultreport.html的话,新运行出来的报告就会把之前的覆盖掉,所以一般都是用当时执行时的时间戳来命名
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HXcLvR2S-1598006853791)(en-resource://database/10176:1)]
  • time.time() 时间戳,获取1970到现在的格林威治时间
  • time.localtime(时间戳) 将里面的时间戳本地化
  • time.strftime(“想要的时间格式”,时间) 将时间以想要的格式打印出来
  1. 跑测试套件生成测试报告
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYNMLHjh-1598006853794)(en-resource://database/10180:1)]

异常捕捉与错误截图

当出现错误的时候,将当前出现错误的地方进行截图生成错误截图
driver.get_screenshot_as_file存放错误截图
当前路径下创建一个东西时当前路径可以用.来表示
在这里插入图片描述
此处有个断言,判断字符串hao_上网从这里开始,和加载出来的页面title是否相同,如果不相同调用截图将错误页面截取出来
页面title:
在这里插入图片描述
在这里插入图片描述
两个不相等,所以截取屏幕
在这里插入图片描述

数据驱动ddt(用数据的个数驱动方法执行的次数)

如果需要多次执行一个案例,比如说都是搜索,分别搜索中文,英文,数字,此时需要编写三个测试用例吗?
在这里插入图片描述
像这样,除了搜索内容外其他都没什么太大变动的,就可以利用数据驱动来做

而python 的unittest 没有自带数据驱动功能。所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成

1. 使用ddt要先引包
from ddt import ddt,data,file_data,unpack
2. 类前要标注 @ddt 引入ddt

在这里插入图片描述

3. 要测几组数就写几个数据
	@data("123","隐秘的角落","morning")
    def test_ddt(self,value):
         driver = self.driver
         driver.get(self.base_url + "/")
         driver.find_element_by_id("kw").clear()
         driver.find_element_by_id("kw").send_keys(value)
         driver.find_element_by_id("su").click()
         time.sleep(2)
4. 如果有每组有多个参数的话,需要加上 @unpack

@unpack是把data中的每一组的几个参数,映射到方法的几个参数上

 	@data(["123",u"123_百度搜索"], ["隐秘的角落",u"隐秘的角角儿_百度搜索"], ["morning",u"morning_百度搜索"])
    @unpack
    def test_ddt(self,value,except_value):
         driver = self.driver
         driver.get(self.base_url + "/")
         driver.find_element_by_id("kw").clear()
         driver.find_element_by_id("kw").send_keys(value)
         driver.find_element_by_id("su").click()
         time.sleep(2)
         # 判断搜索的网页title和我们期望的一样不
         self.assertEqual(driver.title,except_value,msg="两个不一样!!")
5. 但是当想要执行的参数很多,此时写在方法头很长一串就不太美观,可以将参数写在txt或json文件中,然后进行读取
读txt文件中的数据
  • 从txt文件当中读取数据跑测试用例(注意,txt文件必须是以data打头)
    在这里插入图片描述

  • 读取txt文件中的数据

 	def getCsv(file_name):
        rows=[]
        path=sys.path[0]

        with open(path+'/data/'+file_name,'rt') as f:
            readers = csv.reader(f,delimiter=',',quotechar='|')
            next(readers,None)
            for row in readers:
                temprows=[]
                for i in row:
                    temprows.append(i)
                rows.append(temprows)
            return rows
  • 然后所写的方法前要加
    @data(* getCsv(‘test_baidu_data.txt’))
 	@data(*getCsv('test_baidu_data.csv'))
    @unpack
    def test_ddt(self,value,except_value):
         driver = self.driver
         driver.get(self.base_url + "/")
         driver.find_element_by_id("kw").clear()
         driver.find_element_by_id("kw").send_keys(value)
         driver.find_element_by_id("su").click()
         time.sleep(2)
         # 判断搜索的网页title和我们期望的一样不
         self.assertEqual(driver.title,except_value,msg="两个不一样!!")

读json文件中的数据
标签是@file_data(‘json文件名’)

	@file_data('test_data_list.json')
    @unpack
    def test_ddt(self,value,except_value):
    #def test_ddt(self,value):
         driver = self.driver
         driver.get(self.base_url + "/")
         driver.find_element_by_id("kw").clear()
         driver.find_element_by_id("kw").send_keys(value)
         driver.find_element_by_id("su").click()
         time.sleep(2)
         # 判断搜索的网页title和我们期望的一样不
         self.assertEqual(driver.title,except_value,msg="两个不一样!!")
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值