HTMLTestRunner生成测试报告报错 ModuleNotFoundError: No module named ‘StringIO‘

article/2025/9/29 8:27:29

今天在学习使用HTMLTestRunner生成测试报告时遇到一个报错,如图所示:

网上搜索了下“No module named 'StringIO'”解决方法,原来我用的是Python 3.X版本,而下载的HTMLTestRunner适用于Python2.X(下载链接:http://tungwaiyip.info/software/HTMLTestRunner.html)

于是这里再做次“搬运工”,了解下如何在Python3中使用HTMLTestRunner报No module named 'StringIO'解决方法。

修改HTMLTestRunner.py文件:

(1)第94行,将import StringIO修改成import io

(2)第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

(3)第631行,将print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

(4)第642行,将if not rmap.has_key(cls): 修改成if not cls in rmap:

(5)第766行,将uo = o.decode('latin-1')修改成uo = e

(6)第772行,将ue = e.decode('latin-1')修改成ue = e

HTMLTestRunner修改后,重新运行脚本发现一切正常并在相应路径下生成了测试报告,如图所示:

执行脚本代码参考:

代码没有进行封装,大家就不要纠结这个小问题了,能解决问题就行,有问题可以留言

import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from TestRunner import HTMLTestRunner
class Test01(unittest.TestCase):def setUp(self):self.driver = webdriver.Firefox()# 打印测试页_remote(带水印)文件下载地址self.baseurl1 = "file:///C:/Users/86176/Desktop/%E6%B5%8B%E8%AF%95%E9%A1%B5/%E6%89%93%E5%8D%B0%E6%B5%8B%E8%AF%95%E9%A1%B5_remote.html"# 打印测试页文件下载地址self.baseurl2 ="file:///C:/Users/86176/Desktop/%E6%B5%8B%E8%AF%95%E9%A1%B5/%E6%89%93%E5%8D%B0%E6%B5%8B%E8%AF%95%E9%A1%B5.html"# 阅读测试页文件下载地址self.baseurl3 ="file:///C:/Users/86176/Desktop/%E6%B5%8B%E8%AF%95%E9%A1%B5/%E9%98%85%E8%AF%BB%E6%B5%8B%E8%AF%95%E9%A1%B5.html"# 打印测试页_remote测试用例def test_01(self):driver = self.driverdriver.get(self.baseurl1)sleep(5)# 清空下载文件地址driver.find_element(By.ID, "filedown").clear()# 输入下载文件地址driver.find_element(By.ID, "filedown").send_keys("http://10.11.12.249:8080/cp/files/1.ofd")# 清空水印内容driver.find_element(By.ID, "showWaterMark").clear()# 输入水印内容driver.find_element(By.ID, "showWaterMark").send_keys("我是水印内容")# 清空打印分数driver.find_element(By.ID, "printNum").clear()# 输入打印分数driver.find_element(By.ID, "printNum").send_keys("1")# 打印是否包含水印driver.find_element(By.ID, "printOld").click()driver.find_element(By.XPATH, "//body/select/option[1]").click()sleep(1)# 点击执行以上参数driver.find_element(By.CLASS_NAME, "function_btn").click()sleep(2)# 显示文件元素显示等待最长时间10秒WebDriverWait(driver, 10).until(lambda x: len(driver.find_elements_by_id("pageContainer1")) == 1)try:var = driver.find_element(By.ID, "pageContainer1")print("测试成功:文件已显示")except:print("11111111")driver.quit()# 打印测试页测试用例def test_02(self):driver = self.driverdriver.get(self.baseurl2)# 清空下载文件地址driver.find_element(By.ID, "filedown").clear()# 输入下载文件地址driver.find_element(By.ID, "filedown").send_keys("http://10.11.12.249:8080/cp/files/1.ofd")# 清空水印内容driver.find_element(By.ID, "showWaterMark").clear()# 输入水印内容driver.find_element(By.ID, "showWaterMark").send_keys("我是水印内容")# 清空打印分数driver.find_element(By.ID, "printNum").clear()# 输入打印分数driver.find_element(By.ID, "printNum").send_keys("1")# 点击是否双面打印下拉框driver.find_element(By.ID, "sidedprint").click()# 选择下拉框第一个值driver.find_element(By.XPATH, "//body/select/option[1]").click()sleep(1)# 点击执行以上参数driver.find_element(By.CLASS_NAME, "function_btn").click()sleep(2)# 显示文件元素显示等待最长时间10秒WebDriverWait(driver, 10).until(lambda x: len(driver.find_elements_by_id("pageContainer1")) == 1)try:var = driver.find_element(By.ID, "pageContainer1")print("测试成功:文件已显示")except:print("11111111")driver.quit()# 阅读测试页测试用例def test_03(self):driver = self.driverdriver.get(self.baseurl3)sleep(5)# 清空下载文件地址driver.find_element(By.ID, "filedown").clear()# 输入下载文件地址driver.find_element(By.ID, "filedown").send_keys("http://10.11.12.249:8080/cp/files/1.ofd")# 展示到第几页driver.find_element(By.ID, "maxpage").send_keys(2)# 是否打印driver.find_element(By.ID, "isPrint").click()driver.find_element(By.XPATH, "//*[@id='isPrint']/option[1]").click()# 是否下载driver.find_element(By.ID, "isDownload").click()driver.find_element(By.XPATH, "//*[@id='isDownload']/option[1]").click()sleep(1)# 点击执行以上参数driver.find_element(By.CLASS_NAME, "function_btn").click()sleep(2)# 显示文件元素显示等待最长时间10秒WebDriverWait(driver, 10).until(lambda x: len(driver.find_elements_by_id("pageContainer1")) == 1)try:var = driver.find_element(By.ID, "pageContainer1")print("测试成功:文件已显示")except:print("测试失败:文件未显示")driver.quit()if __name__ == "__main__":test1 = unittest.defaultTestLoader.loadTestsFromTestCase(Test01)suite = unittest.TestSuite(test1)filepath = 'D:\GZ\python\webz\report'runner = HTMLTestRunner(title="带截图的测试报告",description="测试页测试报告",stream=open('../report/test_report.html', 'wb'),verbosity=2,# save_last_try=True,# retry=3)runner.run(suite)

http://chatgpt.dhexx.cn/article/aoilqO79.shtml

相关文章

python中IO库中StringIO方法和BytesIO方法用法详解

有时候数据读写不一定是文件,也可以在内存中读写。StringIO顾名思义就是在内存中读写str。 Python在内存中读写数据,用到的模块是StringIO和BytesIO。 getvalue()方法用于获得写入后的str。 StringIO操作的只能是str,如果要操作二进制数据…

python io模块_python中的StringIO模块

原博文 2015-12-03 13:48 − StringIO经常被用来作为字符串的缓存,应为StringIO有个好处,他的有些接口和文件操作是一致的,也就是说用同样的代码,可以同时当成文件操作或者StringIO操作。 一、例子 import StringIO s StringIO…

StringIO和BytesIO

StringIO和BytesIO 文章目录 StringIO和BytesIOStringIO常用方法 BytesIO常用方法 StringIO io模块中的类 导入方式 from io import StringIO内存中,开辟的一个文本模式的buffer,可以像文件对象一样操作它当close方法被调用的时候,这个buffe…

python中StringIO和BytesIO

1. 类文件对象 最常见的io操作是将磁盘中的文件读到内存以及内存内容写入文I件。还有一种内存和内存之间的IO,叫类文件对象,python中的StringIO和BytesIO就是类文件对象,通俗解释即:像操作文件一样在内存中操作字符串和二进制内容…

Python中的StringIO和BytesIO

1.StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写。 StringIO顾名思义就是在内存中读写str。 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可: 使用getvalue()方…

StringIO 的使用, 存在的意义

StringIO存在的意义 比如想写一个脚本, 从网站下载一个压缩文件, 并解压到本地. 下意识可能分为三部 下载文件写入到本地用zipfile读取这个文件并解压 代码如下: # 1. 下载 import urllib2 res urllib.openurl(url) zip_data res.read()# 2. 写入本地 with open(file_name…

Python3学习笔记23-StringIO和BytesIO

StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即可: from io import StringIO f = StringIO() f.write(Hello) f.write( ) f.write(Word) print(f.getva…

Spring Boot+Vue+ElementUI实现文件的上传和下载到本地 并将 文件信息存入数据库

🎈 1 参考文档 springboot 文件MultipartFile上传路径问题 | 橙熟^ _ ^-CSDN(原本采用绝对路径,参考该文章改成相对路径) 组件 | Element 🚀2 导入依赖和配置application.yml文件 2.1 在pom.xml中导入依赖 采用了myb…

VUE项目中使用node.js搭建server连接本地mysql数据库

最近在研究vue项目中使用node.js搭建server服务器,链接本地mysql数据库,进行数据操作。 准备工作: 1.vue 2.node.js 3:mysql 前面两项对于入行前端的小伙伴应该不是问题了吧, 如果有的话,可以参考vue安装项目。 我选…

vue-实现文件下载

1.利用浏览器的导出功能 window.location.href 服务器文件路径 相当于后端告诉前端文件的地址,直接使用浏览器去下载 2.以流的形式下载文件 查了一些资料,主要用的代码如下,原文章:入口 在此基础上增加了params,…

(基于Vue.js的在线教学平台)源代码+数据库表 Vue.js+Node.js+MySQL 源码免费分享

一.先言 毕业已经快一年啦,工作总时长也一年半左右了啦。现在也毕业季,想着与其吃灰,不如把去年写的毕设可以分享给大家,大家可以做过参考什么的,毕竟社区里秉承分享快乐原则~当然,这个项目其实很简单&…

Vue下载安装步骤的详细教程(亲测有效) 1

目录 一、【准备工作】nodejs下载安装(npm环境) 1 下载安装nodejs 2 查看环境变量是否添加成功 3、验证是否安装成功 4、修改模块下载位置 (1)查看npm默认存放位置 (2)在 nodejs 安装目录下,创建 “node_global…

MySQL 免安装版的下载与配置教程

文章目录 前置附录MySQL 常用命令 事先准备下载 MySQL卸载 MySQL安装 MySQL设置 MySQL 开机自启动远程访问 MySQL使用 MySQL Workbench 远程访问 MySQL使用 Navicat Premium 远程访问 MySQL使用 DataGrip 远程访问 MySQL 后置附录MySQL 的配置文件数据库存放目录 笔者的运行环境…

Vue+MySQL+Springboot

文章目录 一、Vue前端1. 去官网下载Nodejs,如果希望稳定的开发环境则下LTS2. 安装好后winr输入node -v查询是否安装成功3. 高版本的nodejs自带npm,则不必再下载,查询命令npm -v4. 由于在国内使用npm是非常慢的,所以在这里我们推荐…

Vue.js下载与安装

windows系统 1. 特点 Vue.js:是一套构建用户界面的渐进式框架 Vue:只关注视图层,采用自底向上增量开发的设计 Vue:目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件 2. Vue.js的下载与安装 1)下载安装No…

MySQL的下载、配置(手把手)

一、MySQL下载 首先到官网下载MySQL,下载链接:https://downloads.mysql.com/archives/community/ 进入到页面: 选择你需要使用的MySQL版本(我这里选择5.7.24,比较稳定的版本)选择你的操作系统(windows&a…

vue+nodejs+mysql上线部署(服务器CentOS8)

一.Liunx配置安装node(环境配置) 建software文件夹 mkdir /opt/software 2.进入software文件夹 cd /opt/software 3.查看服务器系统,下载相应的node版本 uname -a 去nodejs 官网,找nodejs linux的下载链接 (推荐下载node-v16.5.0版本&#x…

[记录六]Vue+node+koa2+mysql+nginx+redis,全栈开发小程序和管理员管理系统项目——服务端图片上传与下载

大家好,我是小佑小佐:https://blog.csdn.net/Smell_rookie,是一名页面仔工程师,我会不定时在CSDN更新我的博客,有兴趣的可以点个关注来逛逛我的主页。 前言:本项目需要涉及前端上传图片与显示图片&#xff…

Vue.js 最新官方下载地址与项目导入

目录 VUE2下载网址 VUE2使用示例&#xff1a; VUE3下载与使用 VUE3示例&#xff1a; 在官网上下载vue.js或者是vue.min.js。并用<script>标签引入。 应小伙伴要求区分一下版本&#xff1a; VUE2下载网址 Installation — Vue.jsVue.js - The Progressive JavaScrip…

vue.js下载及安装的三种方法

vue.js下载及安装的三种方法 要下载安装vue首先得下载安装node.js和npm。下载安装好这两样以后就可以安装vue了&#xff0c;下面给大家介绍三种安装vue的方法。 1.直接在官网上下载 在官网上下载vue.js。并用<script>标签引入。 注意&#xff1a;下载时网址是 https://vu…