Selenium2自动化测试模型
一.自动化测试库(library):是由代码集组成的,以供调用;面向对象的代码组织形成的库,称为类库;面向过程的代码组织形成的库称为函数库;webdriver就是一个类库;
测试框架(framework):为解决一类问题而开发,用户可以使用框架提供的类与函数;unittest:单元测试框架,主要用于实现测试用例的组织和执行,以及测试结果的生成;
测试工具(tools):更加的抽象,屏蔽了底层代码,一般会有单独的界面供用户操作;
二.自动化测试模型
1.线性测试:每个脚本都是相对独立和完整的,且不产生其他依赖和调用;测试用例的开发和维护成本很高;
2.模块化驱动测试:把重复的操作独立成公共模块,需要时被调用,提高了测试用例的可维护性;
3.数据驱动测试:数据的参数化;实现数据和脚本的分离,增强脚本的重复性;
4.关键字驱动测试:QTP(UFT-Unified Functional Testing),Robot Framework,Selenium IDE
模块化驱动测试模型实例:
#模块化驱动测试模型
#public.py
class Login():
#登录
def user_login(self,driver):
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys("xx")
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys("xx")
driver.find_element_by_id("xxx").click()
#退出
def user_logout(self,driver):
driver.find_element_by_link_text("退出").click()
driver.quit()
from selenium import webdriver
from public import Login
import time
driver=webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.126.com")
#调用登录模块
Login().user_login(driver)
#调用退出模块
Login().user_logout(driver)
数据驱动测试实例
通过定义变量进行参数化,可以通过列表,字典,或者读取文本文件(txt,csv,xml)的方式进行参数化;
#模块化驱动测试模型
#public.py
class Login():
def user_login(self,driver,username,password):
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys(username)
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys(password)
driver.find_element_by_id("xxx").click()
....
from selenium import webdriver
from public import Login
class LoginTest():
def __init__(self):
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(10)
self.driver.get("http://www.126.com")
#admin用户登录
def test_admin_login(self):
username="admin"
password="123456"
Login().user_login(self, driver, username, password)
self.driver.quit()
#guest用户登录
def test_guest_login(self):
username = "guest"
password = "123456"
Login().user_login(self, driver, username, password)
self.driver.quit()
读取txt文件:
user_info.txt
Zhangsan,123
Lisi,1234
Wangwu,567
user_file=open("user_info.txt","r")
lines=user_file.readlines()
user_file.close()
for line in lines:
username=line.split(",").[0]
password=line.split(",").[1]
print(username,password)
读取csv文件
创建info.csv文件,首先通过wps表格或excel创建表格,文件另存为CSV格式进行保存;
注意不要通过直接修改文件的后缀名来创建CSV文件,这样并非真正的CSV文件。
import csv
date=csv.reader(open("info.csv","r"))
for user in date:
print(user)
print(user[1])
读取xml文件: