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

2023-05-16

今天在学习使用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.driver
        driver.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.driver
        driver.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.driver
        driver.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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTMLTestRunner生成测试报告报错 ModuleNotFoundError: No module named ‘StringIO‘ 的相关文章

随机推荐