文章目录
一、什么是关键字驱动?
1、什么是关键字驱动?(以关键字函数驱动测试)
关键字驱动又叫动作字驱动,把项目业务封装成关键字函数,再基于关键字函数实现自动化测试
2、项目业务实现转化为关键字函数?
- 覆盖项目业务 = 用例集合覆盖测试
- 用例集合 = 一个一个用例实现覆盖测试
- 覆盖用例 = 多个操作步骤组成=多个关键字函数
- 操作步骤封装成对应的关键字函数
- 比如:登录用例
登录用例=多个操作步骤组成 基于每个操作步骤封装对应的关键字函数
登录用例:
1、打开浏览器 关键字函数 open_browser()
2、加载项目地址 关键字函数 load_url()
3、输入用户名 关键字函数 input()
4、输入密码 关键字函数 input()
5、点击登录 关键字函数 click()
3、三种设计模式对比
- pom :把每个页面当做一个对象来进行编程 实现某个业务流程的测试=调用页面对象的一
些属性及方法实现测试 - 数据驱动:用外部数据驱动测试
- 关键字驱动:所有业务流程封装成对应的函数 实现某个业务流程的测试 = 调用多个关键字
方法,实现业务流程的测试 难点:封装什么样的关键字函数?
二、实战
1、文件目录
2、library.py 文件内容
from selenium import webdriver
class Library:
# 登录用例 = 多个操作步骤组成 基于每个操作步骤封装对应的关键字函数
# 登录用例:
# 1、打开浏览器- 关键字函数- open_browser()
# 2、加载项目地址- 关键字函数- load_url()
# 3、输入用户名- 关键字函数- input()
# 4、输入密码- 关键字函数- input()
# 5、点击登录- 关键字函数- click()
def open_browser(self,browser):
# 传入的浏览器参数保持首字母大写
browser = browser.capitalize()
# 获取不同类型的浏览器驱动
self.driver = getattr(webdriver, browser)()
# 使用原来的方式-打开 Edge 浏览器
# self.driver = webdriver.Edge()
# 打开其他浏览器
def load_url(self, url):
self.driver.get(url)
def locator(self, loc):
return self.driver.find_element(*loc)
def input(self, loc, text):
# 获取元素
el = self.locator(loc)
# 输入
el.send_keys(text)
def click(self, loc):
# 获取元素
el = self.locator(loc)
# 点击
el.click()
3、test_login.py 文件内容
import time
import unittest
from selenium.webdriver.common.by import By
from TestKDT.keywords.library import Library
class TestCase01(unittest.TestCase):
def test_login(self):
"""
基于关机子驱动 = 调用多个关键字函数
登录用例:
1、打开浏览器- 关键字函数- open_browser()
2、加载项目地址- 关键字函数- load_url()
3、输入用户名- 关键字函数- input()
4、输入密码- 关键字函数- input()
5、点击登录- 关键字函数- click()
:return:
"""
lib = Library()
lib.open_browser('edge')
lib.load_url(url='http://116.62.63.211/shop/user/logininfo.html')
time.sleep(3)
username = "hc_test"
password = "hctest123"
el_login = (By.XPATH, '//button[text()="登录"]')
el_username = (By.NAME, "accounts")
el_password = (By.XPATH, '//input[@type="password"]')
lib.input(loc=el_username,text=username)
lib.input(loc=el_password,text=password)
lib.click(loc=el_login)
# 关键字驱动自动化测试框架:只要维护 excel yaml 文件数据--后续更新