随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

#------------------------------------------------我是可耻的分割线-------------------------------------------

测试报告文件名

在每次运行测试之前,都要手动修改报告的名称,如果忘记修改,就会把之前的报告覆盖,这样做显然很麻烦,那么有没有办法使每次生成的报告名称都不重复并且有意义?最好的方法是在报告中假如当前时间,这样生成的报告既不会重叠,又能更清晰地知道报告的生成时间。

Pythontime模块中提供了丰富的关于时间操作的方法,可以利用这些方法来完成这个需求。

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

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

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

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

python中时间日期格式符号(区分大小写)如下表:

序号

指令

含义

 

%a

星期几的简写

 

%A

星期几的全程

 

%w

十进制表示的星期几(值从06,星期天为0

 

%d

十进制表示的每月的第几天

 

%b

月份的简写

 

%B

月份的全称

 

%m

十进制表示的月份

 

%y

不带世纪部分的十进制年份(值从099

 

%Y

带世纪部分的十进制年份

 

%H

24小时制的小时

 

%l

12小时制的小时

 

%p

本地的AMPM的等价显示

 

%M

十时制表示的分钟数

 

%S

十进制的秒数

 

%f

十进制的微妙,零填充左边

 

%Z

当前时区的名称

 

%j

十进制表示的每年的第几天

 

%U

一年的星期数(00~53),星期天为星期的开始

 

%W

一年的星期数(00~53),星期一为星期的开始

 

%x

本地相应的日期表示

 

%X

本地相应的时间表示

 

%%

%号本身

继续打开测试用例,做如下修改。

# !/usr/bin/env python
# -*- coding: UTF-8 –*-
__author__ = 'Mr.Li'

from selenium import webdriver
import unittest,time
from HTMLTestRunner import HTMLTestRunner

class Baidu(unittest.TestCase):
    '''百度搜索测试'''
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)
        self.base_url = 'http://www.baidu.com'

    def test_baidu_search(self):
        '''搜索关键字:HTMLTestRunner'''
        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()
        title = driver.title
        self.assertEqual(title,"百度一下,你就知道")

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu('test_baidu_search'))

    #按照一定格式获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")

    #定义报告的存放路径
    filename = '../report/' + now + 'result.html'
    fp = open(filename,'wb')
    #定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title='百度搜索测试报告',
                            description='用例执行情况:')
    runner.run(testunit)#运行测试用例
    fp.close()#关闭报告文件

通过strftime()方法指定的格式获取当前时间,将当前时间的字符串赋值给now便利。将now通过加号(+)拼接到生成的测试报告的文件名中。再次运行测试用例,生成的测试报告文件名如下图:

# !/usr/bin/env python
# -*- coding: UTF-8 –*-
__author__ = 'Mr.Li'

from selenium import webdriver
import unittest,time
from HTMLTestRunner import HTMLTestRunner

class Baidu(unittest.TestCase):
    '''百度搜索测试'''
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)
        self.base_url = 'http://www.baidu.com'

    def test_baidu_search(self):
        '''搜索关键字:HTMLTestRunner'''
        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()
        title = driver.title
        self.assertEqual(title,"百度一下,你就知道")

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(Baidu('test_baidu_search'))

    #按照一定格式获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")

    #定义报告的存放路径
    filename = '../report/' + now + 'result.html'
    fp = open(filename,'wb')
    #定义测试报告
    runner = HTMLTestRunner(stream=fp,
                            title='百度搜索测试报告',
                            description='用例执行情况:')
    runner.run(testunit)#运行测试用例
    fp.close()#关闭报告文件

02-09 22:54