今天小编给大家分享一下id是html的属性吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
顺晟科技
2022-09-15 19:47:26
198
HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,可以生成易于使用的HTML测试报告,这个扩展很简单,只有一个HTMLTestRunner.py,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html。
下载该文件,然后把它放到Python3的lib目录下,我的为:D:\Python35\Lib。
1.修改HTMLTestRunner
HTMLTestRunner.py是基于Python2开发的,如果是Python3环境,需要修改HTMLTestRunner.py文件。
1 import StringIO修改为import io 2 self.outputBuffer = StringIO.StringIO()修改为self.outputBuffer = io.StringIO() 3 print >>sys.stderr, \'\nTime Elapsed: %s\' % (self.stopTime-self.startTime)修改为print(sys.stderr, \'\nTime Elapsed: %s\' % (self.stopTime-self.startTime)) 4 if not rmap.has_key(cls):修改为if not cls in rmap: 5 uo = o.decode(\'latin-1\')修改为uo = e 6 ue = e.decode(\'latin-1\')修改为ue = e
在Python交互模式下引入HTMLTestRunner模块,没有报错,则说明添加成功:
1 C:\Users>python3 2 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> import HTMLTestRunner 5 >>>
2.生成HTML测试报告
1 # coding:utf-8
2 import unittest
3 from selenium import webdriver
4 import time
5 from HTMLTestRunner import HTMLTestRunner
6
7
8 class TestBaidu(unittest.TestCase):
9
10 def setUp(self):
11 self.driver = webdriver.Firefox()
12 self.driver.maximize_window()
13 self.driver.implicitly_wait(10)
14 self.base_url = "http://www.baidu.com"
15
16 def tearDown(self):
17 self.driver.quit()
18
19 def test_baidu(self):
20 driver = self.driver
21 driver.get(self.base_url)
22 driver.find_element_by_id("kw").send_keys("selenium")
23 driver.find_element_by_id("su").click()
24 time.sleep(3)
25 self.assertEqual(driver.title, "selenium_百度搜索")
26
27
28 if __name__ == \'__main__\':
29 suite = unittest.TestSuite()
30 suite.addTest(TestBaidu("test_baidu"))
31 file = open("./resultReport.html", "wb")
32 runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
33 runner.run(suite)
34 file.close()
在当前目录打开resultReport.html:

3.优化测试报告
HTMLTestRunner可以读取doc string类型的注释,因此,只需要在测试类或者测试方法下添加doc string类型的注释即可显示测试类和测试方法的注释。
1 # coding:utf-8
2 import unittest
3 from selenium import webdriver
4 import time
5 from HTMLTestRunner import HTMLTestRunner
6
7
8 class TestBaidu(unittest.TestCase):
9 """测试百度搜索"""
10 def setUp(self):
11 self.driver = webdriver.Firefox()
12 self.driver.maximize_window()
13 self.driver.implicitly_wait(10)
14 self.base_url = "http://www.baidu.com"
15
16 def tearDown(self):
17 self.driver.quit()
18
19 def test_baidu(self):
20 """搜索关键词selenium"""
21 driver = self.driver
22 driver.get(self.base_url)
23 driver.find_element_by_id("kw").send_keys("selenium")
24 driver.find_element_by_id("su").click()
25 time.sleep(3)
26 self.assertEqual(driver.title, "selenium_百度搜索")
27
28
29 if __name__ == \'__main__\':
30 suite = unittest.TestSuite()
31 suite.addTest(TestBaidu("test_baidu"))
32 file = open("./resultReport.html", "wb")
33 runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
34 runner.run(suite)
35 file.close()
运行脚本,然后在当前目录下打开resultReport.html文件:

4.修改测试报告名称
在测试之前,如果不修改测试报告文件名,则运行结束后,之前的测试报告会被覆盖,为了避免这种情况,我们可以在文件命中添加时间。
Python的time模块为我们提供了很多操作时间的方法:
1 # coding:utf-8
2 import time
3
4 print(time.time()) # 返回当前时间(以秒为单位),自1970-01-01 00:00:00以来的秒数
5
6 print(time.localtime()) # 将1970-01-01 00:00:00以来的秒转换为本地时间的元组
7
8 print(time.ctime()) # 将1970-01-01 00:00:00以来的以秒为单位的时间转换为本地时间的字符串
9
10
11 print(time.strftime(("%Y-%m-%d %H_%M_%S"))) # 根据设置的格式将时间元组转换为字符串
12 """
13 %Y 带世纪部分的十进制年份,2019
14 %m 十进制表示的月份, [01,12].
15 %d 十进制表示每月的第几天 [01,31].
16 %H 24小时制十进制的小时 [00,23].
17 %M 十进制表示的分钟数 [00,59].
18 %S 十进制的秒数
19 %z 时区名称
20 %a 星期的简称 ,Sun
21 %A 星期的全称 ,Sunday
22 %b 月份的简称,Mar
23 %B 月份的全称,March
24 %I 12小时制的小时 [01,12].
25 %p 本地的AM或PM的等价显示
26 """
修改测试脚本:
1 if __name__ == \'__main__\':
2 suite = unittest.TestSuite()
3 suite.addTest(TestBaidu("test_baidu"))
4 now_time = time.strftime("%Y-%m-%d %H_%M_%S")
5 file_name = "./"+now_time+"result.html"
6 file = open(file_name, "wb")
7 runner = HTMLTestRunner(stream=file, title="百度搜索测试报告",description="用例执行情况:")
8 runner.run(suite)
9 file.close()
然后运行测试脚本,即可生成不同名称的测试报告。
4.输出项目集成测试报告
修改runnertest.py文件,使其可以生成项目集成测试报告。
1 # coding:utf-8
2 import unittest
3 from HTMLTestRunner import HTMLTestRunner
4 import time
5
6 discover = unittest.defaultTestLoader.discover("./testpro/testcase/", "test*.py")
7 if __name__ == \'__main__\':
8
9 now_time = time.strftime("%Y-%m-%d %H-%M-%S")
10 file_name = "./testpro/testresult/"+now_time+"result.html"
11 file = open(file_name, "wb")
12 runner = HTMLTestRunner(stream=file, title="测试报告", description="测试用例执行情况")
13 runner.run(discover)
执行测试脚本,查看生成的测试报告:

19
2022-10
19
2022-10
18
2022-10
16
2022-10
02
2022-10
02
2022-10