功能测试使用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. SpringBoot(七) -- 嵌入式Servlet容器

    一.嵌入式Servlet容器 在传统的开发中,我们在完成开发后需要将项目打成war包,在外部配置好TomCat容器,而这个TomCat就是Servlet容器.在使用SpringBoot开发时,我们无需 ...

  2. 简历内容-resume

    1.TCP.UDP通信  服务器客户端  网络层 2.http协议 通信  网络编程  应用层  根据公司给出的应用层协议开发指定程序: 3.json  cjson Cjson解析器 4.freeRT ...

  3. python 导入re模块语法及规则

    正则表达式是功能比较强大的模块,应用在很多地方,抓网页,数据分析,数据验证等,下面讲述python 导入re模块语法及规则. 1,re模块语法 re.match 从头开始匹配 re.search 匹配 ...

  4. C# 反射实现动态加载程序集

    原文:https://blog.csdn.net/pengdayong77/article/details/47622235 在.Net 中,程序集(Assembly)中保存了元数据(MetaData ...

  5. MongoDB的使用学习之(一)开篇

    本人是菜鸟-1级,整理这个系列,之所以用整理,而不是写,是因为本人不是从头自己读源码,一个一个字母翻译过来的,而是记录整个学习过程,查看别人好的文章,收集好的资料,并有自己的一些项目代码,并从中得到点 ...

  6. Codeforces Round #421 (Div. 2) - B

    题目链接:http://codeforces.com/contest/820/problem/B 题意:给定一个正n边形,然后让你选择3个不同的顶点,使得这3个顶点形成的角度尽可能的接近a. 思路:首 ...

  7. BZOJ1135 LYZ(POI2009) Hall定理+线段树

    做这个题之前首先要了解判定二分图有没有完备匹配的Hall定理: 那么根据Hell定理,如果任何一个X子集都能连大于等于|S|的Y子集就可以获得完备匹配,那么就是: 题目变成只要不满足上面这个条件就能得 ...

  8. rabbit localhost不能登录

    解决方案 将C:\Users\{用户名}\.erlang.cookie 复制到 C:\Windows\System32\config\systemprofile 目录. 重启rabbitMQ服务 [转 ...

  9. 在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码

    这两天装了一个mysql 5.7数据库,但是在本地dos登陆不上去,报错Access denied for user 'root'@'localhost'(using password:YES): 也 ...

  10. HttpClientUtil工具类封装

    package com.jd.ng.shiro.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; ...