selenium+python之HTML测试报告

转 http://www.cnblogs.com/huiguniang/p/7154735.html


r一、准备

1、本节用到的模块——HTMLTestRunner

1)下载:下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

鼠标右键→目标另存为,保存到本地。

2)安装:将下载的HTMLTestRunner.py文件复制到Python安装目录下即可

...\Python36\Lib

3)验证:在Python交互模式下引入HTMLTestRunner模块,如系统没有报错,则说明添加成功

2、修改HTMLTestRunner

因为HTMLTestRunner是基于Python2开发的,如果在Python3环境下使用,需要对其部分内容进行修改。使用notepad++打开HTMLTestRunner.py文件,修改如下内容:

第94行,将import StringIO修改成import io

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

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

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

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

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

二、生成HTML测试报告

以百度搜索为例生成HTML测试报告

1、代码实现

#-*- coding: utf-8 -*-fromseleniumimportwebdriverfromHTMLTestRunnerimportHTMLTestRunnerimportunittest,timeclassBaiduIdeTest(unittest.TestCase):defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="https://www.baidu.com/"deftest_baidu_ide(self):

driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys("HTMLTestRunner")

driver.find_element_by_id("su").click()

time.sleep(5)

self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)deftearDown(self):

self.driver.quit()if__name__=="__main__":#构造测试套件testsuit =unittest.TestSuite()

testsuit.addTest(BaiduIdeTest("test_baidu_ide"))#定义测试报告存放路径fp = open('./result.html','wb')#定义测试报告runner = HTMLTestRunner(stream=fp,

title='自动化测试报告',

description='用例执行情况:')

runner.run(testsuit)#关闭测试报告fp.close()

2、代码分析

1)将HTMLTestRunner模块用import导入进来。

2)通过open()方法以二进制写模式('wb')打开当前目录下的result.heml,如果没有,则自动创建。

3)调用HTMLTestRunner模块下的HTMLTestRunner类。

stream 指定测试报告文件

title 定义测试报告的标题

description 定义测试报告的副标题

4)通过HTMLTestRunner的run()方法来运行测试套件中的测试用例

5)关闭测试报告文件close()

3、代码效果

selenium+python之HTML测试报告_第1张图片

4、tips

代码执行的时候将鼠标放到“if __name__ == "__main__":”右键选择“Run'baidu_ide_text'” 而不要使用“Run untitest in baidu_ide_text'”,否则无法生成测试报告

三、更易读的测试报告

通过Python的doc string类型的注释增强测试报告的可度性。

python代码注释分为两种:commen(普通注释#开头)和doc string(描述函数、类和方法三引号表示)

1、代码实现

......classBaiduIdeTest(unittest.TestCase):'''百度搜索测试'''defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="https://www.baidu.com/"deftest_baidu_ide(self):'''搜索关键字'''driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys("HTMLTestRunner")

driver.find_element_by_id("su").click()

time.sleep(5)

self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)

........

2、代码效果

selenium+python之HTML测试报告_第2张图片

四、测试报告名称

使用python的time模块,在报告名称中加入当前时间增强测试报告文件的识别性。

1、知识准备

time.time():获取当前时间戳

time.ctime():当前时间的字符串形式

time.location():当前时间的struct_time形式

time.strftime():获得当前时间,可以将时间格式化字符串

常用格式化符号:

%Y:带世纪的年,2017

%y:不带世纪的年,17

%m:月份

%d:天

%H:24小时制的小时

%M:分

%S:秒

2、代码实现

......if__name__=="__main__":#构造测试套件testsuit =unittest.TestSuite()

testsuit.addTest(BaiduIdeTest("test_baidu_ide"))#按照一定格式获取当前时间now = time.strftime("%Y%m%d_%H%M%S")#将当前时间加入到报告文件名称中filename ='./'+now+'result.html'#定义测试报告存放路径fp = open(filename,'wb')#定义测试报告runner = HTMLTestRunner(stream=fp,

title='自动化测试报告',

description='用例执行情况:')

runner.run(testsuit)#关闭测试报告fp.close()

3、代码效果

五、项目集成测试报告

将以上内容集成到项目的runtest.py文件中,使其作用于整个测试项目

1、代码实现

#-*- coding: utf-8 -*-fromseleniumimportwebdriverimportunittest, timeclassYoudaoIdeTest(unittest.TestCase):'''有道翻译测试'''defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="http://www.youdao.com/"deftest_youdao_ide(self):'''中英翻译测试'''driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("translateContent").clear()

driver.find_element_by_id("translateContent").send_keys(u"自动化测试报告")

driver.find_element_by_css_selector("button").click()

time.sleep(5)

self.assertEqual(u"【自动化测试报告】", driver.title)deftearDown(self):

self.driver.quit()if__name__=="__main__":

unittest.main()

2、代码效果

selenium+python之HTML测试报告_第3张图片

你可能感兴趣的:(selenium+python之HTML测试报告)