python unittest框架&生成html报告学习笔记

unittest基本框架

import unittest

class RunCase(unittest.TestCase):

	@classmethod
	def setUpClass(cls):
		print('所有case执行之前的前置')
		
	@classmethod
	def tearDownClass(cls):
		print('所有case执行之后的后置')

	def setUp(self):
		print('每条case之前执行')

	def tearDown(self):
		print('每条case之后执行')

	@unittest.skip('')  # 无条件跳过此条case
	def test_case01(self):
		"""第一条case打开网页"""
		print('我是case01')

	def test_case02(self):
		"""第二条case输入账号"""
		print('我是case02')

if __name__ == '__main__':
	# 构造测试集
	suite = unittest.TestSuite()
	suite.addTest(RunCase('test_case01'))
	suite.addTest(RunCase('test_case02'))
	# 运行测试集
	runner = unittest.TextTestRunner()
	runner.run(suite)

1、case副标题

def test_case01(self):
	"""第一条case打开网页"""
	print('我是case01')

在case函数下用三个引号来描述此条case的测试内容,使报告看起来更清晰明确。

2、@classmethod的使用

官方说明:classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法
对此我不是很理解,但是在unittest中使用后的效果如图:

关于装饰器、类方法的知识后续还要继续学习,这里仅做一个记录。

3、@unittest.skip(’’)的使用

在某条case前加上@unittest.skip('这里写跳过的原因 ' ),则会无条件跳过这条case。

其他几种用法参考下面这篇博文

https://blog.csdn.net/heatdeath/article/details/72633303

4、生成测试报告及报告路径设置

需要导入这两个模块

from HTMLTestRunner import HTMLTestRunner
import os

修改main函数

if __name__ == '__main__':
	# 构造测试集
	suite = unittest.TestSuite()
	suite.addTest(RunCase('test_case01'))
	suite.addTest(RunCase('test_case02'))
	# 生成测试报告
	file_path_father = os.path.abspath(os.path.dirname(os.getcwd()))
	file_path = os.path.join(file_path_father + "\\report\\" + 'run_case.html')
	f = open(file_path, 'wb')
	runner = HTMLTestRunner(stream=f,
							verbosity=2,
							title='验证测试报告',
							description='这是一份测试报告')
	# 运行测试集
	runner.run(suite)
a.运行分析

HTMLTestRunner 的 HTMLTestRunner 方法 跟 unittest.TextTestRunner 方法 一样,支持测试结果信息的收集

b.报告路径分析

考虑到case脚本可能会被拷贝到其他电脑上运行,所以报告存放路径最好不要写成绝对路劲。当前测试报告的绝对路径是file_path = "D:\F\pyworkspace\SeleniumPython\report\run_case.html"

工程目录如下图:
在这里插入图片描述
这里我在学习的时候遇到一个问题,看的教程中老师教的是用os.getcwd()获取当前工程根目录,然后和"\\report\\" + 'run_case.html'拼接就得到了报告所在路径。(老师教程中的目录结构与我截图一致)

file_path = os.path.join(os.getcwd()+"\\report\\" + "first_case.html")

但是实际在run_case.py里使用这个方法得到的路径其实是run_case.py文件所在路径,即D:\F\pyworkspace\SeleniumPython\case,显然跟"\\report\\" + 'run_case.html'拼接得到的路径是错误的。

综上所述,我需要的是当前运行文件run_case.py的父级目录,然后跟 "\\report\\" + 'run_case.html'拼接才能得到正确路径。不得不说老师的视频给了我很大误导,不过我后来多番度娘,python中有语句是可以直接获取到父级目录的,一下子迎难而解,心情很是激动。

file_path_father = os.path.abspath(os.path.dirname(os.getcwd()))
file_path = os.path.join(file_path_father + "\\report\\" + 'run_case.html')
# 此处注意斜杠的转义

得到的路径即:file_path = "D:\F\pyworkspace\SeleniumPython\report\run_case.html

以下是python中获取路径的方法
①.获取当前路径
os.getcwd()
②.获取当前路径的父级路径
os.path.abspath(os.path.dirname(os.getcwd()))
③.获取当前路径的前两级路径
os.path.abspath(os.path.abspath(os.path.dirname(os.getcwd())))

https://www.cnblogs.com/qinyanli/p/8325228.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值