今天在学习使用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)