# -*- coding:utf-8 -*-
'''
Created on 2018年2月7日
@author: yfk
'''
import unittest
from selenium import webdriver
from public.logger import Logger
mylogger = Logger(logger='PageTest1').getlog()
class PageTest1(unittest.TestCase):
def setUp(self):
driver = webdriver.Firefox()
mylogger.info("打开Firefox")
driver.maximize_window()
mylogger.info("最大化窗口")
driver.implicitly_wait(10)
mylogger.info("智能等待")
driver.get("http://www.baidu.com")
mylogger.info("打开百度首页")
self.driver = driver
def tearDown(self):
self.driver.quit()
mylogger.info("退出浏览器")
def test_01(self):
self.driver.find_element_by_id("kw").send_keys("test")
mylogger.info("输入框输入test")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
def test_03(self):
self.driver.find_element_by_id("kw").send_keys("good")
mylogger.info("输入框输入good")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
def test_02(self):
self.driver.find_element_by_id("kw").send_keys("monkey")
mylogger.info("输入框输入monkey")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
def test_05(self):
self.driver.find_element_by_id("kw").send_keys("china")
mylogger.info("输入框输入china")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
def test_04(self):
self.driver.find_element_by_id("kw").send_keys("english")
mylogger.info("输入框输入english")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
先放case代码,logger模块是自己写的关于记录日志的。
setUp,tearDown:是对每一个用例(test开头的函数)的初始化和用例执行完成后的清理工作,一般用来关闭浏览器;在多个用例中,如果某个用例的元素定位或者其他出错,会阻止用例的继续运行。
setUpClass,tearDownClass:是在执行用例之前初始化一遍,所有的用例执行完后再进行清理工作,并且在setUpClass和tearDownClass的上面添加@classmethod装饰器,如果某个用例的元素定位或者其他出错,不影响整个用例的执行工作;这样也许会更好一些,不用每次都去重新打开浏览器,节省测试时间,但要注意的是不要忽略了用例直接的相互影响,所以用这种模式要考虑到用例之前的耦合,尽可能不要让前个用例的测试环境影响后一个用例的执行。
因为引入了logger机制,所以我在pycharm上运行的时候,如果用例出错终台是无法看到错误结果的,需要去报告中查看,我想要我的日志中也能记录到错误信息。这时候,使用try...except...抛异常并捕获,最后加上raise(不加raise用例失败时不能识别到)。
以下代码:
# -*- coding:utf-8 -*-
'''
Created on 2018年2月7日
@author: yfk
'''
import unittest
from selenium import webdriver
from public.logger import Logger
mylogger = Logger(logger='PageTest1').getlog()
class PageTest1(unittest.TestCase):
@classmethod
def setUpClass(cls):
driver = webdriver.Firefox()
mylogger.info("打开Firefox")
driver.maximize_window()
mylogger.info("最大化窗口")
driver.implicitly_wait(10)
mylogger.info("智能等待")
driver.get("http://www.baidu.com")
mylogger.info("打开百度首页")
cls.driver = driver
@classmethod
def tearDownClass(cls):
cls.driver.quit()
mylogger.info("退出浏览器")
def test_01(self):
try:
self.driver.find_element_by_id("kw").send_keys("test")
mylogger.info("输入框输入test")
self.driver.find_element_by_id("1su")#此处定位故意写错
mylogger.info("按搜索按钮")
except Exception as e:
mylogger.info(e)
#raise
def test_03(self):
try:
self.driver.find_element_by_id("kw").send_keys("good")
mylogger.info("输入框输入good")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
except Exception as e:
mylogger.info(e)
raise
def test_02(self):
try:
self.driver.find_element_by_id("kw").send_keys("monkey")
mylogger.info("输入框输入monkey")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
except Exception as e:
mylogger.info(e)
raise
def test_05(self):
try:
self.driver.find_element_by_id("kw").send_keys("china")
mylogger.info("输入框输入china")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
except Exception as e:
mylogger.info(e)
raise
def test_04(self):
try:
self.driver.find_element_by_id("kw").send_keys("english")
mylogger.info("输入框输入english")
self.driver.find_element_by_id("su")
mylogger.info("按搜索按钮")
except Exception as e:
mylogger.info(e)
raise
if __name__ == '__main__':
unittest.main()
运行后的测试报告:
日志记录: