功能测试使用selenium,模块有:

1、futil: 公共方法,如元素高亮显示

# coding=utf-8
"""高亮显示元素"""
def highLight(driver,element):
js = '''
element = arguments[0];
element.setAttribute('style','border: 3px solid red;')
'''
driver.execute_script(js,element)

2、models: 页面控件和页面操作方法封装

页面基类BasePage.py

# coding=utf-8
from selenium import webdriver TIME_OUT=5 #超时时间 class BasePage(object):
def __init__(self, driver):
"""初始化浏览器"""
self.driver = driver
'''
if driver_type == "ie":
try:
self.driver = webdriver.Ie()
except Exception,e:
print e
elif driver_type == "chrome":
try:
self.driver = webdriver.Chrome()
except Exception,e:
print e
else:
try:
self.driver = webdriver.Firefox()
except Exception,e:
print e
''' def opendriver(self, url):
self.driver.get(url)
self.driver.maximize_window()
self.driver.implicitly_wait(TIME_OUT) def find_element(self, by, value):
"""查找元素"""
try:
return self.driver.find_element(by=by, value=value)
except Exception, e:
print e def find_elements(self, by, value):
"""查找元素集合"""
try:
return self.driver.find_elements(by=by, value=value)
except Exception, e:
print e def is_element_isexist(self, By, Value):
"""判断元素是否存在"""
try:
self.driver.find_element(by=By, value=Value)
return True
except Exception, e:
print e
return False def close(self):
"""当前关闭浏览器tab"""
try:
self.driver.close()
except Exception,e:
print e def quit(self):
"""退出浏览器进程"""
try:
self.driver.quit()
except Exception,e:
print e

具体页面封装和操作LoginPage.py

# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By class LoginPage(BasePage):
'''
登录页面的登录窗口
'''
user_name = (By.NAME, "username")
pass_word = (By.NAME, "password")
btn_login = (By.CLASS_NAME, "login-btn") def __init__(self, driver):
BasePage.__init__(self, driver)
self.driver = driver
self.input_username = self.find_element(*self.user_name)
self.input_password = self.find_element(*self.pass_word)
self.btn_login = self.find_element(*self.btn_login) def login(self, username, password):
self.input_username.send_keys(username)
self.input_password.send_keys(password)
self.btn_login.click()
# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By class Index(BasePage):
'''
首页
'''
user_menu = (By.ID, "userSetting")
user_info = (By.XPATH, "//a[@href='user/userInfo']")
language_span = (By.ID, "changeLanguage")
chinese_li = (By.XPATH, "//li[@value='zh_cn']")
english_li = (By.XPATH, "//li[@value='en']") def __init__(self, driver):
BasePage.__init__(self, driver)
self.driver = driver
self.usermenu = self.find_element(*self.user_menu)
self.userinfo = self.find_element(*self.user_info)
self.languagespan = self.find_element(*self.language_span)
self.chinase = self.find_element(*self.chinese_li)
self.english = self.find_element(*self.english_li) def chengeLanguage(self):
self.languagespan.click()
self.english.click()
self.driver.implicitly_wait(5)

2、Report: 测试报告文件夹

3、testcases: 具体测试用例实现

测试用例基类BaseCase.py,负责执行用例运行前和运行结束后操作

# coding=utf-8

import unittest
import Logger
from selenium import webdriver log = Logger.Loger()
class BaseCaseClass(unittest.TestCase): def setUp(self):
# options = webdriver.ChromeOptions()
# options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
# options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default");
# self.driver = webdriver.Chrome(chrome_options=options)
self.driver = webdriver.Ie()
self.url = "http://baidu.com" def tearDown(self):
self.driver.close() def loginfo(self, msgStr):
log.info(msgStr)

具体用例:

# coding=utf-8

from BaseCase import BaseCaseClass
from functiontest.models.LoginPage import LoginPage
from functiontest.models.IndexPage import Index
from functiontest.futil import Util class CheckLogin(BaseCaseClass): def runTest(self):
'''
name:测试标题为:XX系统
verbosity:0
'''
self.driver.get(self.url)
loginPage = LoginPage(self.driver)
self.assertEqual(loginPage.driver.title,u"XX系统","标题不正确") class CheckIndex(BaseCaseClass): def runTest(self):
'''
name:测试首页存在个人资料选项
verbosity:0
'''
self.driver.get(self.url)
#self.driver.switch_to_window(self.driver.window_handles[1])
loginPage = LoginPage(self.driver)
loginPage.login("admin", "xxx")
indexPage = Index(self.driver)
indexPage.chengeLanguage()
indexPage = Index(self.driver)
indexPage.usermenu.click()
Util.highLight(self.driver, indexPage.userinfo)
self.assertEqual(indexPage.userinfo.text, "Personal Data","标题不正确")

Python web功能&接口自动化测试框架搭建——接口用例实现

Python web功能&接口自动化测试框架搭建——接口公共方法

Python web功能&接口自动化测试框架搭建——接口测试模块

Python web功能&接口自动化测试框架搭建——功能测试模块

Python web功能&接口自动化测试框架搭建——测试用例执行和结果收集

Python web功能&接口自动化测试框架搭建——通用模块

Python web功能&接口自动化测试框架搭建——unittest介绍

Python web功能&接口自动化测试框架搭建——环境搭建

python web自动化测试框架搭建(功能&接口)——功能测试模块的更多相关文章

  1. python web自动化测试框架搭建(功能&接口)——接口测试模块

    Python接口测试采用python读取excel的方法,通过requests库发送请求和接收响应.模块有: Data:用于存放excel用例的,用例格式: iutil: 接口公共方法,数据引擎.ht ...

  2. python web自动化测试框架搭建(功能&接口)——通用模块

    1.通用模块: config.conf: 公共配置文件,配置报告.日志.截图路径,以及邮件相关配置 [report] reportpath = E:\workspace\WebAutomation\s ...

  3. python web自动化测试框架搭建(功能&接口)——接口用例实现

    测试用例基类: # coding=utf-8 import unittest import Logger log = Logger.Loger() class BaseCase(unittest.Te ...

  4. python web自动化测试框架搭建(功能&接口)——接口公共方法

    接口公共方法有:数据引擎.http引擎.Excel引擎 1.数据引擎:获取用例.结果检查.结果统计 # -*- coding:utf-8 -*- from XlsEngine import XlsEn ...

  5. python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集

    由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...

  6. Python web自动化测试框架搭建(功能&接口)——unittest介绍

    Python UnitTest测试框架介绍 1)         TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2)         TestSuite:测试套件 ...

  7. python web自动化测试框架搭建(功能&接口)——环境搭建

    自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...

  8. 基于python的自动化测试框架搭建

    滴~ 今日打卡!   好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...

  9. selenium +python web自动化测试环境搭建

    基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...

随机推荐

  1. python程序daemon化

    1 直接空格加& python flask_server.py & 最简单的方式 这样还不行,不知道为什么flask server会自动退出. $ nohup python flask ...

  2. python工程的结构

    1 python系统库的位置 大部分系统库在/usr/lib64/python2.7目录下,但是像sys模块,是python内置的库,是用c实现的,直接连接进了python.exe中了. 也就是说,在 ...

  3. CF912E Prime Gift题解(搜索+二分答案)

    CF912E Prime Gift题解(搜索+二分答案) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1314956 洛谷题目链接 $     $ CF题目 ...

  4. CentOS 5.5编译安装lnmp

    如果是安装Centos6.5记得Perl是必选的,否则无法安装VMWare Tools!!!!切记 如果出现make错误需要安装其他软件,装好后  make clean   make install ...

  5. Django中ORM的聚合索引

    Django中ORM的聚合索引   在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典 在使用时需要先导入模块from django.db.mod ...

  6. C#设计模式:外观模式(Facade Pattern)

    一,什么是外观模式? 外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用. 二,我们看看代码的实现 using System; using Syst ...

  7. openstack stein部署手册 10. horzion

    # 安装程序包 yum install -y openstack-dashboard # 变更配置文件 /etc/openstack-dashboard/local_settings 变更以下 OPE ...

  8. EwoMail 邮件服务器安装

    ewomail 安装及使用 主页:http://www.ewomail.com/ 开源版主页:http://www.ewomail.com/list-9.html 开源版文档:http://doc.e ...

  9. 修改图片尺寸网站https://www.yasuotu.com/

    修改图片尺寸网站https://www.yasuotu.com/

  10. 理解Promise (2)

    一进来 我们开始执行 executor函数 传递两个参数 再调用 then 方法 ,then 方法里面有 OnResolve方法,OnReject 方法  在then 方法中,我们一开始的状态是pen ...