先上代码:
baidusousuo.py代码如下:
#coding=utf-8
from selenium import webdriver
import time,unittest
class baidu(unittest.TestCase):
"百度"
def setUp(self):
self.driver=webdriver.Firefox()
self.verificationErrors = []
self.accept_next_alert = True
def test_baidu_search(self):
"百度搜索"
self.driver.get("http://www.baidu.com/")
self.driver.find_element_by_id("kw").clear()
self.driver.find_element_by_id("kw").send_keys("自动化测试")
self.driver.find_element_by_id("su").click()
time.sleep(2)
title=self.driver.title
print(title,self.driver.find_element_by_xpath("//div[@class='nums']").text)
self.driver.close()
def tearDown(self):
self.driver.quit()
self.assertEquals([],self.verificationErrors)
if __name__=="__main__":
unittest.main()
loginyf.py代码如下:
# coding=utf-8
from selenium import webdriver
import time,unittest
print("python")
class login_yf(unittest.TestCase):
"眼防"
def setUp(self):
self.driver=webdriver.Firefox()
self.verificationErrors = []
self.accept_next_alert = True
def test_login_yf(self):
"眼防登录"
self.driver.get("http://10.X.X.187:8085/epd/login")
self.driver.find_element_by_id("username").clear()
self.driver.find_element_by_id("username").send_keys("zhangjiang")
self.driver.find_element_by_id("password").clear()
self.driver.find_element_by_id("password").send_keys("123456")
time.sleep(2)
self.driver.find_element_by_id("submitId").click()
self.driver.get_screenshot_as_file("d:/img/lod.png")
print("title:",self.driver.title)
name=self.driver.find_element_by_xpath("//div[@class='content_right_link']/a[1]").text
print(name)
if name == "退出登录" :
print("登录成功!")
else:
raise NameError("user name error !")
self.driver.close()
def tearDown(self):
self.driver.quit()
self.assertEquals([],self.verificationErrors)
if __name__=="__main__":
unittest.main()
test_all.py代码如下:
#coding=utf-8
import unittest
import HTMLTestRunner
import baidusousuo
import loginyf
testunit=unittest.TestSuite()
#将测试用例加入测试容器(套件)中
testunit.addTest(unittest.makeSuite(loginyf.login_yf))
print("test")
testunit.addTest(unittest.makeSuite(baidusousuo.baidu))
#执行测试套件
# runner=unittest.TextTestRunner()
# runner.run(testunit)
#定义一个报告存放路径,支持相对路径
filename="d:\\img\\result.html"
fp=open(filename,'wb')
runner=HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='测试报告',
description='用例执行情况'
)
# 执行测试用例
runner.run(testunit)
baidusousuo.py和loginyf.py是两个Test_case,all_test.py是执行测试用例,执行结果如下:
此例子还需要有很多地方的优化:
1,文件结构改进,Test_case文件夹,Data数据,all_test等。
2,用例的读取改进,discover
3,自动发送测试报告邮件
4,多线程/分布式执行测试用例
5,定时任务
6,管理自动化测试项目(git/svn/jenkins)
------------------------------------更新:增加时间戳命名测试报告文件-------------------------------------
每次run的时候生成的测试报告都会把之前的给覆盖掉,那么历史的测试报告就看不到了,对此,文件名称加上时间戳,就可以解决这个问题了。
首先获取到当前时间,也就是生成测试报告的当前时间,然后格式化,再添加到文件名称里面去。
代码如下:
now = time.strftime("%Y-%m-%d_%H:%M:%S",time.localtime(time.time()))
filename="d:\\img\\"+now+"result.html"