web自动化笔记十三:参数化、跳过用例、生成HTML测试报告

参数化


1、为什么要参数化
        解决冗余代码问题
 

2、什么是参数化
        说明:根据需求,动态获取参数
 

3、参数化应用场景
        场景:解决相同业务逻辑,不同测试数据问题。实现:通过安装unittest扩展插件parameterized来实现
步骤:
        1、导包:from parameterized import parameterized
        2、修饰测试函数 @parameterized.expand(列表类型数据)
        3、在测试函   数中使用变量接收,传递过来的值
语法:
        1、单个参数:值为列表[1,2,3]
        2、多个参数:值为列表嵌套元祖 如:[(1,2,3),(2,3,4)]
        3、在测试函数中的参数设置变量应用参数值,注意:变量数量必须和数据值的个数相同
    
参数化函数执行代码:


data包下data.py文件代码

def get_data():
    return [(1,2,3),(2,3,5),(3,4,7),(4,5,9)]

TestCase包下TestCase.py文件下代码:

# 导包
import unittest
from parameterized import parameterized
# 创建要测试的函数
from data.data import get_data
 
 
def add_data(x,y):
    return x + y
# 创建测试类
class TestAdd(unittest.TestCase):
    # 创建测试函数
    # 使用参数化标记
    @parameterized.expand(get_data())
    def testAdd(self,x,y,expant):
        result = add_data(x,y)
        self.assertEqual(result,expant)
        print(result)


执行结果:

Ran 4 tests in 0.011s
 
OK
3
5
7
9
 
Process finished with exit code 0

跳过用例

1、直接将测试函数标记成挑过(直接跳过)
        @unittest.skip(’说明’)
        场景:一般适合功能为实现完成用例
执行代码:

# 导包
import unittest
from parameterized import parameterized
# 创建要测试的函数
from data.data import get_data
 
 
def add_data(x,y):
    return x + y
# 创建测试类
class TestAdd(unittest.TestCase):
    # 创建测试函数
    # 使用参数化标记
    @parameterized.expand(get_data())
    def testAdd01(self,x,y,expant):
        result = add_data(x,y)
        self.assertEqual(result,expant)
        print(result)
    @unittest.skip("此功能下个版本上线")
    def testAdd02(self):
        """
        此功能下个版本上线
        """
        pass

执行结果:

3
5
7
9
 
Skipped: 此功能下个版本上线
 
 
Ran 5 tests in 0.012s
 
OK (skipped=1)

2、根据条件判断测试函数是否跳过(条件满足跳过)
        @unittest.skipIf(条件, ‘原因’)
        场景:一般判断条件满足,就不执行;如:达到制定版本,此功能失效
执行代码:

# 导包
import unittest
from parameterized import parameterized
# 创建要测试的函数
from data.data import get_data
 
VERSION = 30
def add_data(x,y):
    return x + y
# 创建测试类
class TestAdd(unittest.TestCase):
    # 创建测试函数
    # 使用参数化标记
    @parameterized.expand(get_data())
    def testAdd01(self,x,y,expant):
        result = add_data(x,y)
        self.assertEqual(result,expant)
        print(result)
    @unittest.skip("此功能下个版本上线")
    def testAdd02(self):
        """
        此功能下个版本上线
        """
        pass
 
    @unittest.skipIf(VERSION > 25 , "此功能已失效")
    def testAdd02(self):
        """
        此功能已失效
        """
        print("testAdd02")


执行结果:

3
5
7
9
 
Skipped: 此功能已失效
 
 
Ran 5 tests in 0.006s
 
OK (skipped=1)

提示:
    两种方式都可以修饰方法,也可以修饰测试类

生成HTML测试报告(掌握)

HTML报告:根据TextTestRunner改编而来
操作:
        1、导包
        2、定义测试套件
        3、实例化HTMLTestRunner类,并调用run方法执行测试套件
步骤:
        1、复制HtmlTestRunner.py文件到指定目录
        2、导包:from HTMLTestRunner import  HTMLTestRunner
        3、获取报告存放文件流,并实例化HTMLTestRunner类
        suite = unittest.defaultTestLoader.discover(“./”,pattern = “test02*.py”)
        4、执行run方法
        with open (“../erport/report.html”,”wb”) as f:#注意:生成html报告,必须使用wb,以二进制形式写入
                    HTMLTestRunner(stream = f).run(suite)

执行代码和文件结构:

import time
 
from tool.HTMLTestRunner import HTMLTestRunner
import unittest
# 执行测试套件
suite = unittest.defaultTestLoader.discover("./TestCase",pattern="test*.py")
# 写入问文件,并执行,生成html报告
with open("./report/{}.html".format(time.strftime('%Y_%m_%d_%H_%M_%S')),"wb") as f:
    # 实例化 HTMLTestRunner类,并执行
    HTMLTestRunner(stream=f,verbosity= 2,title="XX项目测试报告",description="操作系统:Linux").run(suite)

执行结果:

ok testAdd01_0 (testcase.TestAdd)
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> 
ok testAdd01_1 (testcase.TestAdd)
TimeElapsed: 0:00:00
ok testAdd01_2 (testcase.TestAdd)
ok testAdd01_3 (testcase.TestAdd)

生成报告示例:

open 与with open(极力推荐)区别:
        1、共同点:打开文件
        2、不同点:with open = 执行打开操作 + 关闭操作

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值