target
- 基于unittest框架跳过 测试函数
- 生成html报告
- PO模式
一、跳过用例
"""
目标:unittest skip 与 skipif功能
语法:
@unittest.skip("原因")
@unittest.skipIf(条件,原因)
"""
# 导包
import unittest
# version = 30
# 新建测试类
# @unittest.skip("Test01方法功能暂未实现")
# @unittest.skipIf(version > 25, "版本大于25了,跳过此用例!")
class Test01(unittest.TestCase):
# 新建测试方法 1
@unittest.skip("test01方法功能暂未实现") # 可以修饰方法
def test01(self):
# print("test01")
"""此方法功能暂未完成"""
pass
# 新建测试方法 2
# @unittest.skipIf(version > 25, "版本大于25了,跳过此用例!")
def test02(self):
print("test02")
分类:
-
直接跳过
语法:@unittest.skip(说明)
场景:一般适合功能未实现完成用例 -
条件满足跳过
语法:@unittest.skipIf(条件, 原因)
场景:一般判断条件满足,就不执行;如:达到指定版本,此功能失效;提示:
以上两种方式,都可以修饰函数和类;
二、HTML测试报告
word 、pdf、txt 等等格式
# 导包
import unittest
# 定义 测试套件
suite = unittest.defaultTestLoader.discover("./")
# 执行
with open("../report/report.txt", "w", encoding="utf-8") as f:
unittest.TextTestRunner(stream=f, descriptions="跳过测试报告演示", verbosity=2).run(suite)
这就是报告
HTML报告:根据TextTestRunner改编而来
操作:
-
导包
from xx.HTMLTestRunner import HTMLTestRunner
-
定义测试套件
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")
-
实例化
HTMLTestRunner
类,并调用run
方法执行测试套件。
with open(报告存放路径, "wb") as f: #注意:生成html报告,必须使用wb,以二进制形式写入
# 实例化HTMLTestRunner类
HTMLTestRunner(stream=f).run(测试套件)
在 html 里面 用 wb ,这里不用encoding
在txt 里面用 w
"""
目标:基于unittest框架执行生成html版报告
操作:
1. 复制HtmlTestRunner.py文件到指定目录
2. 导包 from HTMLTestRunner import HTMLTestRunner
3. 获取报告存放文件流,并实例化HTMLTestRunner类,执行run方法
"""
# 导包
import unittest
import time
from tools.HTMLTestRunner import HTMLTestRunner
# 定义 测试套件
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")
# 定义报告存放路径及文件名称
report_dir = "../report/{}.html".format(time.strftime("%Y_%m_%d %H_%M_%S"))
# 获取报告文件流 并执行
with open(report_dir, "wb") as f:
# 参数 文件流是必填的,剩下的可以不写
HTMLTestRunner(stream=f,
title="XX项目自动化测试报告",
description="操作系统 win7").run(suite)
open 和 with open 的区别
"""
目标:open 与 with open区别
1. 共同点:打开文件
2. 不同点, with open =执行打开操作+关闭操作
"""
f = None
try: # 捕获异常
f = open("../report/text.txt", "r", encoding="utf-8")
print(f.read())
except:
pass
finally:
f.close() # 手动关闭操作
"""with open 极力推荐"""
# 读取
# as f 就是f 文件流,就是open的东西
# 必须重命名,不然的后面调用不了
with open("../report/text.text.txt", "r", encoding="utf-8") as f:
f.read()
# 写入
with open("../report/text.text.txt", "w", encoding="utf-8") as f:
f.read()
"""文件流:打开指定写入的文件"""