修改使用HtmlTestRunner 生成测试报告的路径

本文介绍如何在使用python+appium+unittest进行app自动化测试时,修改由HtmlTestRunner生成的测试报告存放路径,使其从测试用例所在目录改到其上级目录。

1.问题:

在使用python+appium+unittest 做app 自动化测试项目时,用到HtmlTestRunner 工具生成的测试报告默认存放在测试用例所在的目录下,

希望能改成测试报告的目录与测试用例目录在同一级:

2.解决问题:

找到HtmlTestRunner 源码:

在result.py中搜索reports,找到生成报告路径的代码,发现该路径取的是运行测试用例时当前的目录,而我需要的是测试用例保存到当前目录的上一级目录里,于是修改代码:

修改代码保存后,再次运行测试用例,结果符合预期:

 

转载于:https://www.cnblogs.com/suyuqinghuan/p/7739649.html

1.将 HTMLTestRunner.py 放置在 C:\Python36\Lib 下 2.涉及到创建目录和时间,需要在脚本开头 import os import time 3.执行脚本中删除语句 unittest.main() ,一般在脚本最后,然后添加如下语句: #导入HTMLTestRunner库,这句也可以放在脚本开头 from HTMLTestRunner import HTMLTestRunner #定义脚本标题,加u为了防止中文乱码 report_title = u'登陆模块测试报告' #定义脚本内容,加u为了防止中文乱码 desc = u'手机JPG登陆模块测试报告详情:' #定义date为日期,time为时间 date=time.strftime("%Y%m%d") time=time.strftime("%Y%m%d%H%M%S") #定义path为文件路径,目录级别,可根据实际情况自定义修改 path= 'D:/Python_test/'+ date +"/login/"+time+"/" #定义报告文件路径和名字,路径为前面定义的path,名字为report(可自定义),格式为.html report_path = path+"report.html" #判断是否定义的路径目录存在,不能存在则创建 if not os.path.exists(path): os.makedirs(path) else: pass #定义一个测试容器 testsuite = unittest.TestSuite() #将测试用例添加到容器 testsuite.addTest(测试类名("测试方法名1")) testsuite.addTest(测试类名("测试方法名2")) #将运行结果保存到report,名字为定义的路径和文件名,运行脚本 with open(report_path, 'wb') as report: runner = HTMLTestRunner(stream=report, title=report_title, description=desc) runner.run(testsuite) #关闭report,脚本结束 report.close()
<think>好的,我现在需要帮助用户了解如何使用HTMLTestRunner和unittest生成HTML测试报告。首先,我得回忆一下HTMLTestRunner的基本用法,以及它与unittest框架的结合方式。记得用户提到的几个引用中提到了导入模块、测试用例编写和生成报告的步骤,我需要整合这些信息。 首先,用户可能需要安装HTMLTestRunner。根据引用3,可能需要下载HTMLTestRunner.py文件,并将其放在项目目录或Python的Lib/site-packages目录下。这一步很重要,否则导入时会报错。 接下来,用户需要编写测试用例。使用unittest框架的话,通常需要创建测试类,继承TestCase,然后写测试方法。例如,用户可能有多个测试方法,每个方法对应一个测试用例。这里要注意,每个测试方法应该以test开头,这样unittest才能自动识别。 然后,需要将测试用例添加到测试套件中。用户可以使用TestLoader的discover方法来批量添加测试用例,或者手动添加。这部分需要根据用户的测试文件结构来调整路径,比如测试用例存放的目录。 生成测试报告时,需要以二进制写入模式打开一个HTML文件,然后使用HTMLTestRunner运行测试套件,并将结果输出到该文件。参数如title、description等可以根据需要自定义。引用2提到HTMLTestRunner支持添加截图和失败重试,但可能需要额外的配置,用户可能需要进一步了解这些高级功能。 需要注意的是,在Python 3中,原生的HTMLTestRunner可能需要修改编码部分,如引用3所述,避免出现编码错误。如果用户遇到导入问题,可能需要检查文件路径修改HTMLTestRunner.py的代码。 最后,用户可能需要查看生成测试报告,确认测试结果是否正确。报告中会包含用例的执行情况、通过率、错误和失败信息,这有助于用户分析测试结果。 现在,我需要将这些步骤整理成清晰的指导,确保用户能逐步操作。同时,生成的相关问题要覆盖常见的使用场景和潜在问题,比如安装问题、测试用例编写、报告定制化和异常处理等。</think>以下是如何使用`HTMLTestRunner`与`unittest`生成HTML测试报告的步骤: --- ### **步骤1:安装HTMLTestRunner** - 下载`HTMLTestRunner.py`文件(适用于Python 3需修改文件编码为`utf-8`[^3]),将其放在项目目录或Python的`Lib/site-packages`目录中。 - 验证安装:在Python中执行`import HTMLTestRunner`无报错即成功。 --- ### **步骤2:编写unittest测试用例** ```python import unittest class TestDemo(unittest.TestCase): def test_add(self): self.assertEqual(1+1, 2) def test_subtract(self): self.assertEqual(3-1, 2) ``` --- ### **步骤3:创建测试套件并加载用例** ```python # 方法1:手动添加用例 suite = unittest.TestSuite() suite.addTest(TestDemo("test_add")) suite.addTest(TestDemo("test_subtract")) # 方法2:自动发现用例(推荐) discover = unittest.defaultTestLoader.discover(start_dir="./test_case", pattern="test_*.py") ``` --- ### **步骤4:生成HTML测试报告** ```python import HTMLTestRunner with open("report.html", "wb") as f: # 二进制写入模式 runner = HTMLTestRunner.HTMLTestRunner( stream=f, title="测试报告标题", description="测试描述", verbosity=2 # 日志详细程度 ) runner.run(discover) # 替换为你的测试套件 ``` --- ### **步骤5:查看测试报告** 生成的`report.html`文件中会包含: - 用例执行状态(通过/失败) - 统计信息(通过率、耗时) - 错误/失败具体信息[^2] --- ### **注意事项** 1. **路径问题**:测试用例目录需与`discover`的`start_dir`参数一致。 2. **Python 3兼容性**:若报编码错误,需修改`HTMLTestRunner.py`中的`self.outputBuffer = StringIO.StringIO()`为`self.outputBuffer = io.StringIO()`。 3. **高级功能**:支持失败重试和截图(需结合Selenium等库)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值