自动化测试模型分为四大类: 线性测试、 模块化驱动测试、 数据驱动测试和关键字驱动测试。
本地Web测试站点搭建,下载:【一键安装包(运行环境+ECMS)】(含安装说明)。
-
工具:帝国CMS
- 通道:帝国软件
线性模式
通过录制或编写对web的操作步骤产生相对应的线性脚本,并且每个测试脚本相对独立,不依赖或调用其他模块,单纯的模拟用户操作场景。
'''
自动化测试模型--线性测试
案例:在帝国软件主页模拟自动登录和退出操作。
'''
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
url = "http://localhost/"
driver.get(url)
# 设置隐性等待5s
driver.implicitly_wait(5)
userName = "XXXXX"
passWord = "XXXXX"
# 输入登录信息
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)
# 登录
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
sleep(3)
# 退出
driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()
sleep(3)
# 警告框处理
driver.switch_to_alert().accept()
sleep(3)
driver.quit()
模块化驱动测试
把重复的操作代码封装为独立的公共模块,当需要用到这些模块时就直接调用,最大限度地消除了重复,从而提高测试用例的可维护性。
'''
自动化测试模型--模块化驱动测试
实例:将登录和退出操作封装为独立的公共模块进行调用。
'''
from selenium import webdriver
import time
class Login_OUT_Test():
'''登录与退出'''
def login_Test(driver):
'''登录方法'''
# self.userName=userName
# self.passWord=passWord
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys("XXXX")
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys("XXXX")
# 登录
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
def loginOut_Test(driver):
'''退出方法'''
driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()
time.sleep(3)
# 警告框处理
driver.switch_to_alert().accept()
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('http://localhost/')
driver.maximize_window()
driver.implicitly_wait(5)
Login_OUT_Test.login_Test(driver)
Login_OUT_Test.loginOut_Test(driver)
编写调用上段代码模块。
'''
调用Test_1230_02_MKHQD_CS模块
功能:登录和退出。
'''
from Test_1230_02_MKHQD_CS import *
browser = webdriver.Chrome()
browser.get('http://localhost/')
browser.maximize_window()
browser.implicitly_wait(5)
Login_OUT_Test.login_Test(browser)
Login_OUT_Test.loginOut_Test(browser)
browser.quit()
数据驱动测试
类似于数据的参数化,因数据的改变从而让测试的结果产生变化。
'''
自动化测试模型--数据驱动测试
实例:实现多个账户登录。
'''
import time
class Login_OUT_Test():
'''登录与退出'''
def login_Test(driver, userName, passWord):
'''登录方法'''
# self.userName=userName
# self.passWord=passWord
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)
# 登录
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()
# 验证登录信息
Login_Validate = driver.find_element_by_xpath(
"/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/font/b").text
print('登录名:', Login_Validate)
def loginOut_Test(driver):
'''退出方法'''
driver.find_element_by_link_text('退出').click()
time.sleep(3)
# 警告框处理
driver.switch_to_alert().accept()
编写调用上段代码模块。
'''
调用Test_1230_04_SJQD_CS模块。
实例:实现不同账户信息登录。
'''
from Test_1230_04_SJQD_CS import *
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://localhost/")
browser.maximize_window()
browser.implicitly_wait(5)
Login_OUT_Test.login_Test(browser, 'XXXX1', 'XXXX1')
time.sleep(3)
Login_OUT_Test.loginOut_Test(browser)
# 第二次不同账户信息登录
Login_OUT_Test.login_Test(browser, 'XXXX2', 'XXXX1')
time.sleep(5)
Login_OUT_Test.loginOut_Test(browser)
关键字驱动测试
通过关键字的改变引起测试结果的改变。
目前的关键字驱动测试工具有:QTP、RIDE(Robot Framework)和selenium IDE。
selenium IDE工具页面如下: