刚接触自动化测试,由于没有编程语言的基础,是搞不懂代码里面的函数、封装、包以及其他概念,只是了解字符串、数组、元组及字典这种最基本的名词,更不懂自动化测试框架了。

         在我这种外门汉的角度来看,代码不就是一页word文件写进去,从头执行到尾吗?其实不然,代码可不止一页word,很多页啊。

        看着虫师的书籍学习自动化测试,边看边敲还是会忘记,想想还是做做笔记比较合宜。这篇笔记来粗略记下学习自动化测试的几种模型,可能再之后回来看会有特别的感受,先这样记着吧。

1、线性测试

线性测试,顾名思义,就是一条路按照一条直线走到底。它的每个脚本都是独立的,都可以拿出来单独运行,来验证一个功能点,上两段小代码举个栗子:

打开百度主页:

# coding:utf-8
from time import sleep # 从time中引入sleep
from selenium import webdriver # 从selenium中引入webdriver driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("https://www.baidu.com") # 获取URL,打开页面 driver.quit() # 退出相关浏览器

打开百度主页,并输入查找内容:

# coding:utf-8
from time import sleep # 从time中引入sleep
from selenium import webdriver # 从selenium中引入webdriver driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("https://www.baidu.com") # 获取URL,打开页面 search = driver.find_element_by_id("kw") # 通过id定位搜索框
search.send_keys("selenium") # 填入"selenium"
sleep(5) # 直接等待 driver.quit() # 退出相关浏览器

以上两段代码,分别做了实现打开百度首页和打开百度首页后输入查找内容的功能,都可以单独拿出来执行。如果需要修改查找访问页面,那么我需要两段代码都需要修改。当这类独立的脚本数量多了起来,去修改这些内容花费的工作量太大,将会失去了自动化的目的。

2、模块化与类库

login.py

# coding:utf-8
from time import sleep
from selenium import webdriver # 从selenium中引入webdriver
def login_mantis():
driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 获取URL,打开页面
sleep(1) # 直接等待
username = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 通过Xpath定位获取输入账号框
username.send_keys("wuhaobo") # 输入账号
sleep(1)
password = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 通过Xpath定位获取输入密码框
password.send_keys("123456") # 输入密码
sleep(1)
login = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 通过Xpath定位获取登录按钮
login.click() # 点击登录按钮
sleep(3)

上面的代码实现了mantis登录功能。

quit.py

# coding:utf-8
from selenium import webdriver # 从selenium中引入webdriver def quit_mantis():
driver = webdriver.Firefox() # 选择打开的浏览器
driver.quit() # 退出相关浏览器

上面的代码实现了mantis退出功能。

do_something_in_mantis.py

# coding:utf-8
from time import sleep # 从time中引入sleep
from selenium import webdriver # 从selenium中引入webdriver
import login # 引入登录模块
import quit # 引入退出模块 login.login_mantis() # 调用登录模块
print ">>>以下操作为在登录界面后的操作"
# 需要做的操作放在登录和退出中间
print ">>>以上操作为在登录界面后的操作"
quit.quit_mantis() # 调用退出模块

上面的代码实现了调用登录模块和退出模块。

通过以上代码可以发现,登录模块和退出模块可以让任意操作类脚本调用,省去了该部分代码的重复量,便于维护的同时,也加快了代码的开发速度。

3、数据驱动

直接理解成参数化输入,不同结果输出。

(1)、读取TXT方式

将存好登录的账号密码放置在两个TXT文件中:

aaarticlea/png;base64,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" alt="" />

# coding:utf-8
from time import sleep
from selenium import webdriver # 从selenium中引入webdriver username_file = open("G:\\joker_study\\username.txt") # 打开账号文本路径
username = username_file.read() # 取出账号 password_file = open("G:\\joker_study\\password.txt") # 打开密码文本路径
password = password_file.read() # 取出密码def login_mantis_by_txt():
driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 获取URL,打开页面
sleep(1) # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 获取输入账号框
username_input.send_keys(username) # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 获取输入密码框
password_input.send_keys(password) # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 获取登录按钮
login_button.click() # 点击登录按钮
sleep(3)
driver.quit() # 退出浏览器

上面的代码实现了从TXT文件中读出账号和密码,再传入函数中,进行登录操作。

(2)、通过函数

userconfig.py

# coding:utf-8
def username_password(username="CJOLER",password="123456"):
return username,password

login.py

# coding:utf-8
from time import sleep
from selenium import webdriver # 从selenium中引入webdriver
import userconfig # 引入userconfig文件 un, pw = userconfig.username_password()
print un, pw def login_mantis_by_txt():
driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 获取URL,打开页面
sleep(1) # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 获取输入账号框
username_input.send_keys(un) # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 获取输入密码框
password_input.send_keys(pw) # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 获取登录按钮
login_button.click() # 点击登录按钮
sleep(3)
driver.quit() # 退出浏览器

上面的代码实现了将账号密码放在一个函数内,再去调用,进行登录操作。

(3)、读取字典

userconfig.py

# coding:utf-8
def username_password():
config = {"username": "CJOKER", "password": "123456"}
return config

login.py

# coding:utf-8
from time import sleep
from selenium import webdriver # 从selenium中引入webdriver
import userconfig # 引入userconfig文件 Data = userconfig.username_password()
un = Data["username"]
pw = Data["password"] def login_mantis_by_txt():
driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 获取URL,打开页面
sleep(1) # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 获取输入账号框
username_input.send_keys(un) # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 获取输入密码框
password_input.send_keys(pw) # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 获取登录按钮
login_button.click() # 点击登录按钮
sleep(3)
driver.quit() # 退出浏览器

上面的代码实现了将账号密码放在一个字典内,再去调用,进行登录操作。

(4)、csv文件

aaarticlea/png;base64,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" alt="" />

# coding:utf-8
import os # 引入os模块
import csv # 引入csv包
from time import sleep # 引入sleep方法
from selenium import webdriver # 从selenium中引入webdriver list_username = []
list_password = []
data = csv.reader(file('G:\\joker_study\\userconfig.csv', 'rb')) # 获取每列数据
for user in data:
print user[0] # 获取第一列中从上往下的数据
list_username.append(user[0]) # 将每次读取的字符串加入到数组中
print user[1] # 获取第二列中从上往下的数据
list_password.append(user[1]) # 将每次读取的字符串加入到数组中 def login_mantis_by_csv():
for i in range(len(list_username)):
driver = webdriver.Firefox() # 选择打开的浏览器
driver.maximize_window() # 浏览器窗口最大化
driver.implicitly_wait(3) # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 获取URL,打开页面
sleep(1) # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 获取输入账号框
username_input.send_keys(str(list_username[i])) # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 获取输入密码框
password_input.send_keys(str(list_password)) # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 获取登录按钮
login_button.click() # 点击登录按钮
sleep(3)
driver.quit() # 退出浏览器

 上 面的代码实现了将账号密码分别存在一个CSV表格中,通过csv.reader将每列都读取出来,user[0]第一列,user[1]第二列,一次类 推。需要注意的是,要讲CSV文件打开的格式和工具格式保持一致:在简体中文环境下,EXCEL打开的CSV文件默认是ANSI编码,如果CSV文件的编 码方式为utf-8、Unicode等编码可能就会出现文件乱码的情况。

4、关键字驱动

 采用EXCEL或者QTP及robot framework等工具大部分都是以关键字驱动来实现自动化测试,这种方式由于只需要关注"我要做什么(命令)?对谁做(对象)?怎么做(值)?",目前还没有去采用这种方式去写作脚本,等学习了robot framework或者用到这种方式的时候,再记录补充下吧。

例如这种EXCEL表格(网上随意复制过来)中所示:

aaarticlea/png;base64,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3Zv6o1RMFkM5+vIIrghza4cw6AAaiBQXO9agYtImdjysahYz4ybEMl1PQq7+ya8HK7WDQQ4+vK49GVCfs4rJy5cvbt68euPG55cvX/ryyy8OR7/++svHjx/cuHFlt7vw+PGDx48ffPXVE83Rb7/9Zre7cPnyxefPv7t16+rt29euXds9ffpk0Pvr1z+enHx248YVQcN792798MMr/dGzisnZn4Hcvn39ypXTL798HDoxXDH54YdXd+7cePjw3qNH927fvj74gdVXr17euXPj8eMH9+/fvnv3xsOHdy9d+lTzZyn7/f7t2zf3799++PDu48f3b9++9vz5t4N+Hzy48/jxgwcP7pyefnbu3B/dd/H++OMPN29evXXr6lnvh4rJixffX7lyevnyxVevXt6+ff327etXr26fPv1So4/m3Ldv39y7d+vOnRt37968efPqy5cvDodk33CRR3BFWKJ0CIMOoIFIcbFjjc3R0dFut9tut6enp8fHxycAAAAwM+fOffrRR3/3pz/94dKlSycnJxcvXvjoo99dvHjRbfPpp5/84z9+FJMQO3ru3D999NHf/fnP/3i2eenSpT/84X9+9tk/uW0uXrzwv//37z7++B9iwi9evPCnP/0h6+inn/75D3/4n5988vG/tLn40Ud/d+7cp4Nmn3zy8aGNI/Di73//9xcunD/I//3v//5gjbNLuHjxwkHCn//8j+fOfTowV4RLH3/8D5999uezjfPnz3300e/ObH7Gxx//r8PmpUuX/vCHfziocenSpd///u8Pl3DhwvmPPvrdYXMwgpcuXfzoo99duqRRKX3uxx//r4POFy6c++ijvztc/hmyb5ykRhAAAACU8IxJm5yYqclVDWaE2sGHzfLs2denp+fevXt32LPdnv/uu/cef3jy5JHwlxexo2eS3T1ffPHw8uVLg2Zv3rxxex9w794t4TW6waNPnz65cOGTN2/eHPbcvXvz5s3hYyzBZ0zu3Lkx+IHSe/du3759/ezzt99+8/nn/6r/2XM0Md0GPHnyyP3rp5cvX2y35w8/7fHu3bsLFz5xHyp5/vy7w6U9enT/88/fiyD3r3L8EdztLgweYIkhn/v06ZPBeF2/fvnBg/feECz7xj41gutCXuoQBh1AA5HiYscaVEzaxI6HVQ1mhNrBh83i/46J/xsZxRWTgeRvv/3m3Lk/6nV7/frHO3eu5x71f8fkyZNH2+35QbNgxeTixT9/881Td88333x18eKfD/rvdv96Rd9++82gkCFw7dpO/tmUW7eu7XYXnjx59ObN68Ghq1e39++/d+6gYpIcwRjyuWd/BOQevXfvlm9bwTfkEVwd8lKHMOgAGogUFzvWoGLSJnY8rGowI9QOPmyWJSsm33//fPDzHDL37992fzhDedSvmHz11ZOTk88GzfyKydu3b8+d++P33z9/X+fvXJ2vXdt9++03Z59v3br69ddfKa/l8uWLjx8/kNt8881XV69uz5//082bV9znMvxzl6mYXLu2vXZt98UXDw//7t69OfgNV9k35BFcHfJShzDo0zJ4SUpWe7AMkeJixxpUTNrEjodVDWaE2sGHzbLwMybnz3+iVOz169eHP4fJOupXTL744qH/5zPBZ0wuXPjz4Gdcnz37+sKFf9b53bt3d+/efPTo3qNH9x89un8onWi4enU7+HuWGK9evbx37/bFi/90qDVcvXr68OFdt80yFZObN68M/kbJR/ANeQQtQF7qEAY9l43zAvvYUf9zUmBxj7AMRIqLHWtQMWkTOx5WNZgRagcfNovmfvvp0yfXr18+bA5qCrGjz5597f4Ny36/f/To3rVru4ECsd8xefDgzosX38fUFo4+ffpk8Mcyd+7cGPx1yT5SMbl16+rgaY6HD+/eunX17PPz59/udhdevHgefEzm3bt3z59/G/tNlocP7165cjrY+eTJo7MPz559Pai/3L9/+9Gj+//y+c7gd1hOTj5TVkxkreRznzx5dPXqUOfBMziCb8gjaAHyUocw6FkkixfJiknw5YPC6wgplxiBSHGxYw0qJm1ix8OqJmjG4DRTNseMedlq1e9qXUDzqu0zIVOlgpHGTJ5uXH6uJrElqYumYvLixfeH3wf9+uuvXrz43pX57/7dv/0f/+P/+4u/+IvB0WfPvj537o/ffvvPt9CvXr08Ofns+fPvXMk//PDq/PlP/F8DefPmza1b12JX9+bNm//yX/5z7IqePn1y/vyfDn/V8uOPP5yefub/+GiwYvLDD692u4uHH2R9/fr1bnfh8Gbcd+/eXb/++fnzn5w798eTk8+uXds+enT/UD25d+/WuXN/HPzgyIHXr1+fnHx6+JGUd+/ePXhw5/AUyXffPbty5dSta9y9e/Nguh9//OHSpX96+fKf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" alt="" />

最新文章

  1. 淘宝(阿里百川)手机客户端开发日记第一篇 android 主框架搭建(一)
  2. Linux下设置memcached访问IP
  3. AndroidのUI体验之ImmersiveMode沉浸模式
  4. xhprof 安装使用
  5. UVA 1351 - String Compression
  6. asp.net Context.User.Identity.Name说明
  7. hdu 1788 Chinese remainder theorem again(最小公倍数)
  8. 用JS制作一个信息管理平台完整版
  9. 转:Flutter动画二
  10. Unity 缓冲池概念
  11. 508. Most Frequent Subtree Sum 最频繁的子树和
  12. timeout可以实现当一个命令在规定时间内不返回就强制返回的功能 + 杀毒安装ClamAV nmap 速度 比Telnet 快
  13. 使用iozone测试磁盘性能
  14. [2017BUAA软工]提问回顾
  15. 网站截图工具EyeWitness
  16. Python之shutil模块
  17. 1.Qt简介
  18. [C#] DataTable转成List集合
  19. mfs权威指南
  20. QT5提示can not find -lGL的解决方法

热门文章

  1. 在触发器中,当“IsMouseOver”属性=true时,设置当前控件的高亮选中效果
  2. 认识Applet和Ajax
  3. 通过命令启动一个activity(am pm 命令)
  4. query更多的筛选用法
  5. JS 实战2(邮箱选人功能)
  6. 《DSP using MATLAB》Problem 3.1
  7. test20181016 B君的第三题
  8. 使用graphql-code-generator 生成graphql 代码
  9. Ionic 项目创建
  10. 流行的FPGA的上电复位