自动化测试模型总结

测试框架就是一个集成的体系,包括测试功能的函数库(如导入的包),测试数据源(测试数据),测试对象识别标准(webdriver的各个api),以及可充用的模块(结构优化),自动化测试框架主要经过  模块驱动测试--》数据驱动测试--》对象驱动测试几个过程。

一.模块驱动测试

模块驱动主要发展过程:线性测试(一个用例对应一个脚本,数据和脚本混合)---》模块化与类库(重复的部分写成公共的模块,需要的时候进行调用)

模块化多用于登录和退出模块,或者多处共用的模块

好处:1.提高了开发效率,一处写,多处用   2.方便脚本维护,不必改一处,处处动,类似与环境变量设置的   %home%

下面我们进行登录和退出的模块化,在这之前先了解一下 python的类和方法

def关键字用来创建函数,add为方法名。a和b为参数;class关键字用来创建类,Counter为方法名,特别注意,类下创建方法第一个参数必须为self,但是使用时不必赋值

self:self指对象本身,创建类和方法时实例化得到对象 self,调用时自动执行 类.方法(对象self,参数a,参数b)

>>> def add(a,b):
	c=a+b
	print c

	
>>> add(2,3)
5
>>> def add1(a=1,b=12):
	c=a+b
	return c

>>> d=add1()
>>> print d
13
>>> class Counter:
	def add(self,a,b):
		c=a+b
		print c
	def subtract(self,a,b):
		c=a-b
		print c
>>> d=Counter()
>>> d.subtract(7,2)
5

登录输入用户名,密码的操作单独放到一个脚本中  login.py

#coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest
from time import sleep

#登录网址
def login(self):
    driver=self.driver()
    dr.maxmize_window()
    dr.find_element_by_name("username").send_keys("dingxin")
    dr.find_element_by_name("password").send_keys("admin")
    dr.find_element_by_id("loginInBtn").click()
    sleep(3)

登录后进行其他操作放到 test_login.py中得到:

#coding=utf-8
from selenium import webdriver
from time import sleep
from selenium.common.exceptions import NoSuchElementException
import unittest
import login

#Login类继承TestCase类,告诉unittest,这是一个案例 class Login(unittest.TestCase): #初始化数据 def setUp(self): self.driver=webdriver.Chrome() self.driver.implcitly_wait(30) self.url="http://dhw.lxhbysn.com/pages/E02/login.jsp" self.verificationErrors=[] self.accept_next_alert=True #登录 def test_login(self): driver=self.driver driver.get(self.url) #调用登录模块 login.login(self) sleep(3) lis=driver.find_elements_by_class_name("li") for li in lis: if li.get_attribute("role")=="presentation": print li.text # def tearDown(self): self.driver.quit() self.assertEqual([],self.verificationErrors) if _name_=="_main_": unittest.main()

 (注意缩进,要不然调试不出来)

二.数据驱动测试(即参数化,输入数据的不同导致结果也不同)

实例1:百度搜索逐个多个字段

创建data.txt

selenium
go die
WFU
appium

创建search.py

#coding=utf-8
from selenium import webdriver
from time import sleep
import os

#打开数据文件并读取
source=open("C:\\Users\\DELL\\Desktop\\data.txt","r")
values=source.readlines()
source.close()

#登录网址
for search in values:
    dr=webdriver.Chrome()
    dr.get("http://www.baidu.com")
    dr.find_element_by_id("kw").send_keys(search)
    dr.find_element_by_id("su").click()
    sleep(3)

open是以只读方式打开,readlines()逐行读取文件内容

实例2:登录时多个用户名和密码

python读取文件只有整个读取,逐行,逐个字节进行读取,没有一次读取两条数据

(1)思路:可以创建两个txt,一个放登录名,一个放密码,缺点是无法实现循环

(2)使用函数

def  fun(name="admin",pass=123"):
   return  name,pass

#正式的登录页面调用该函数
us,pw=info.fun()  

(3)python字典(键值对)创建字典用{},keys()返回键值列表,values()返回值列表,

>>> data={'user':'dong','apassword':'489330019'}
>>> print data
{'user': 'dong', 'apassword': '489330019'}
>>> data.keys()
['user', 'apassword']
>>> data.values()
['dong', '489330019']
>>> data.items()
[('user', 'dong'), ('apassword', '489330019')]

函数获取data(整个文件)后期可以用以下循环取出:

for user,pass in  info.items():
 # (将user,pass传入到send_keys()中) 

实例三:表单参数化,多条表单信息(姓名,性别,邮箱,号码),保存成excel,转为csv,可用于创建订单或添加联系人

具体实现:

创建xls文件转化为csv格式,

#coding=utf-8
#导入csv包
import csv

#csv.reader读取csv文件
w_file='C:\\Users\\DELL\\Desktop\\info.csv'
data=csv.reader(file(w_file,'rb'))

#循环输出每一行信息

for user in data:
    print user[0]
    print user[1]
    print user[2]
    print user[3]

结果如下:user[0]表示第一列的数据

>>> ================================ RESTART ================================
>>> 
test
test@163.com
18
男
test2
test2@163.com
21
女
test3
test3@163.com
11
女

实例四:可以通过xml文件进行参数化,一般来说 csv和xml比较灵活。

三.对象驱动测试

对象驱动测试其实包括数据和关键字驱动测试,关键字驱动即类似与selenium IDE 的 command,target 和value 组合进行测试。

转载于:https://www.cnblogs.com/alwayswyy/p/5045639.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值