一、测试固件写法:
当一个类里有多个测试固件时,写法如下:
@classmethod
def setUpClass(cls):
"""
前提准备工作
:return:
"""
cls.engine = BrowserEngine.__new__(BrowserEngine)
cls.driver = cls.engine.open_browser()
@classmethod
def tearDownClass(cls):
"""
测试结束后的操作
:return:
"""
cls.engine.quit_browser()
若仍旧使用原来的方法
def setUp(self):
def tearDown(self):
当一个类里有多个测试用例时,只会执行最后面一个,若想执行全部得改成
def setUpClass(cls):
def tearDownClass(cls):
这样就可以只打开一次页面,就可以执行全部用例,最后才关闭这个页面。
二、POM介绍
POM(Page Object Model)页面对象模型,框架设计中一种设计思想,将页面元素和业务逻辑和测试脚本分离到两个不同类文件,页面类主要是将元素定位和页面操作写成函数,供测试类调用。
这里我们测试流程为:打开百度首页–>点击右上角新闻–>在新闻页点击体育->体育里点击“NBA赛程表”
1)封装基类 base_page.py:封装一些常见的页面操作。
这里简单封装几个常用方法:
import time
from selenium.common.exceptions import NoSuchElementException
import os.path
from selenium import webdriver
from framework.logger import Logger
# 创建logger实例
logger = Logger(logger="BasePage").getlog()
class BasePage(object):
"""
页面基类
"""
def __init__(self, driver):
self.driver = driver
# 退出浏览器 结束操作
def quit_browser(self):
self.driver.quit()
# 浏览器前进
def forward(self):
self.driver.forward()
logger.info("在页面上点击前进.")
# 浏览器后退
def back(self)