使用pycharm编辑自动化脚本,执行后没有html报告生成的几种解决办法

有兴趣一起讨论的同学可以加群:489650589 一起来聊天讨论

最近在搞自动化测试,选择了web端最流行的python+selenium,测试执行选用unittest框架,报告使用HTMLReportRunner

在代码执行的过程中,发现代码执行正常,但是没有报告产生,截图如下

代码执行正常:



执行后可以看到用例执行结果,但是无html报告文件生成,截图如下:


在网上查阅资料后发现,pycharm自带了unittest框架,执行脚本会调用自带的unittest框架,不会执行

if __name__ =="__main__": 之后的代码,可以在pycharm界面的右上角进行更改
将python tests中自带的unittest框架去掉,然后重新执行
重新执行后发现可以执行
if __name__ =="__main__":之后的代码 ,可以正常生成html报告

第二种情况,在导入HTMLtestRunner后,执行脚本发现报错,报错详情为编码问题,但是并不影响脚本的执行,这是因为python安装在windows中,其默认编码为ascii码,但是HTMLTestRunner中文件流的写入为utf-8编码,导致脚本执行完后并没有报告生成,此时可以通过重载系统编码的方式解决:

在执行脚本的前面加上以下三行

import sys

reload(sys)

sys.setdefaultencoding("utf-8")



<think>好的,我现在需要解决用户的问题:如何在PyCharm运行AirTest文件后合并两个log文件并生成单个测试报告。首先,我需要理解用户的需求。他们可能在进行自动化测试时生成了多个日志文件,想要合并这些文件以便于生成统一的测试报告,方便查看和分析结果。 首先,我应该回顾AirTest的基本使用。AirTest是网易开源的自动化测试框架,主要用于游戏和App的测试。它生成的日志文件通常是HTML格式,每个测试用例运行后会生成单独的日志。用户可能在PyCharm运行了多个测试文件,导致生成了多个日志,现在需要合并它们。 接下来,合并日志的方法可能有几种。一种是使用AirTest自带的报告生成工具,可能需要查看官方文档是否有相关参数支持合并日志。另一种是编写脚本手动合并HTML文件,或者使用第三方工具。另外,用户提到使用PyCharm,可能需要配置运行选项或者在项目中设置后处理步骤。 用户提供的参考信息中提到了使用unittest运行测试用例,并生成测试结果。这可能与AirTest本身的报告生成机制不同,但可以借鉴测试框架处理多文件的方法。比如,AirTest可能有命令行参数指定日志输出路径,或者支持批量运行测试并生成统一报告。 我需要确认AirTest是否支持合并日志。查阅资料发现,AirTest的AirtestIDE可以生成测试报告,但如果是多个脚本分开运行,每个都会生成单独的日志。这时候可能需要使用airtest report命令来生成报告,或者使用脚本将多个log.html文件合并。 另外,用户可能不知道AirTest提供了生成聚合报告的功能。例如,通过使用airtest report命令指定多个日志目录,可以生成一个汇总的报告。或者使用poco的测试框架结合unittest来组织测试用例,从而生成单一报告。 还有一个可能性是用户需要自定义脚本,将多个HTML日志文件的内容提取出来,合并到一个新的HTML文件中。这需要解析每个log.html,提取测试结果、截图、步骤等信息,然后整合到一个报告中。这种方法需要一定的HTML和Python处理能力,比如使用BeautifulSoup解析HTML,再生成新的结构。 此外,用户可能希望将合并后的报告集成到PyCharm中,方便查看。PyCharm支持外部工具配置,可能需要在运行测试后自动执行合并脚本,或者在项目中设置构建步骤来处理日志文件。 总结可能的步骤: 1. 使用AirTest命令行工具批量运行测试并生成单一报告。 2. 编写Python脚本调用AirTest的API运行多个测试用例,合并日志。 3. 手动合并多个log.html文件的内容。 4. 利用第三方测试框架(如pytest)集成AirTest测试,生成统一报告。 需要进一步确认AirTest的具体功能和API。例如,airtest的run_script方法是否可以多次调用并收集日志,然后使用logging模块整合。或者查看airtest.report模块是否有合并报告的方法。 另外,参考用户提供的引用内容,他们之前可能使用过unittest来运行测试,并希望类似地处理AirTest的日志。可能需要结合unittest的测试套件(TestSuite)来运行多个AirTest用例,然后生成报告。不过AirTest本身是否支持与unittest集成需要确认。 最终,可能的解决方案是: - 使用命令行工具生成多个日志,然后使用airtest report合并。 - 编写自定义脚本合并日志。 - 配置PyCharm运行配置,使得运行多个测试后自动触发合并脚本。 例如,用户可以在PyCharm中配置一个运行配置,执行完所有测试用例后,运行一个Python脚本,该脚本使用AirTest的Report类来加载多个日志目录,并生成汇总报告。或者使用AirTest提供的多设备测试功能,自动合并日志。 需要确保步骤清晰,用户能够按照指导操作,包括安装必要的库、配置环境、编写脚本等。同时,注意路径问题,确保日志文件路径正确,合并后的报告输出到指定位置。</think>在PyCharm运行AirTest脚本并合并多个日志文件生成单个测试报告,可以通过以下步骤实现: --- ### 步骤1:运行AirTest脚本生成日志 1. 在PyCharm中配置AirTest运行环境: - 安装依赖:`pip install airtest pocoui` - 右键点击AirTest脚本(`.air`目录或`.py`文件),选择运行,默认会生成独立的日志文件(`log.html`)。 --- ### 步骤2:合并多个日志文件 AirTest原生支持通过命令行工具合并多个日志文件: 1. **使用`airtest report`命令**: ```bash airtest report <第一个脚本路径> <第二个脚本路径> ... --log_root <日志目录> --outfile merged_report.html ``` - 示例: ```bash airtest report test_case1.air test_case2.air --log_root ./logs --outfile merged_report.html ``` 2. **在PyCharm中配置自定义命令**: - 打开`Run > Edit Configurations`,添加新的`Shell Script`配置。 - 输入上述命令,运行生成合并后的报告。 --- ### 步骤3:通过Python脚本合并日志 若需自定义合并逻辑,可编写Python脚本: ```python from airtest.report.report import simple_report, LogToHtml # 合并多个日志目录 def merge_logs(log_dirs, output_file="merged_report.html"): htmls = [] for log_dir in log_dirs: h = LogToHtml(log_dir) htmls.append(h.report_data) # 自定义合并逻辑(示例) with open(output_file, "w") as f: f.write("<html><body>") for data in htmls: f.write(data["html"]) f.write("</body></html>") # 示例:合并两个日志目录 merge_logs(["./log1", "./log2"], "merged_report.html") ``` --- ### 步骤4:配置PyCharm自动合并 1. 将合并脚本保存为`merge_reports.py`。 2. 在AirTest运行配置中添加`After launch`任务: - 选择`Run Another Configuration`,指向`merge_reports.py`。 - 确保合并脚本在测试运行后自动执行[^1]。 --- ### 关键点说明 - **日志路径一致性**:确保所有AirTest脚本的日志输出目录一致(通过`--logdir`参数指定)。 - **依赖安装**:合并需依赖`airtest`库,若使用自定义脚本还需安装`jinja2`(用于报告渲染)[^1]。 - **报告内容**:合并后的报告会包含所有测试步骤、截图和断言结果。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值