关键字驱动

关键字驱动的用法(跟HTTPRunner框架思想一致)

1,准备basepage.py,就是浏览器的通用操作,封装各种行为

  • goto
  • click
  • write
  • assert_text
  • assert_prop
  • assert_title

2,准备yaml文件 keywords.yaml(excel,json也可以,推荐yaml,支持各种数据类型)

  • 作用:存储步骤和元素的定位

3,封装通用的测试方法test_keywords.py(将yaml文件中的数据和行为进行封装,运行yaml文件的代码)

代码如下:

basepage.py

关键字驱动

 

 

 

keyword.yaml

-
action: goto
params:
url: "https://v4.ketangpai.com/User/login.html"
-
action: write
params:
locator: [ 'css selector','input[name="account"]' ]
value: "looker@sina.com"
-
action: write
params:
locator: [ 'css selector','input[name="pass"]' ]
value: "admin123456"
-
action: click
params:
locator: [ 'css selector','.btn-btn' ]
-
action: assert_element_attribute_equal
params:
locator: [ 'css selector','.avatar' ]
attr_name: "title"
expected: "yux"

test_keywords.py

# 读取yaml文件中的数据
import yaml

from approval_ui_auto.common.basepage import BasePage

file = r'D:\Pycharm-Workspace\approval_ui_auto\data\keywords.yaml'
with open(file=file,encoding='utf-8') as f:
    datas = yaml.safe_load(f)

class TestKeywords:
    def test_login(self,driver):
        '''普通测试流程'''
        # print(datas)
        page=BasePage(driver)
        # 执行测试步骤
        page.goto(url=...)
        page.write(locator=...,value=...)
        page.write(locator=...,value=...)
        page.click(locator=...)
        page.assert_element_attribute_equal(locator=...)

    def test_keywore(self,driver):
        '''关键字驱动的步骤'''
        page=BasePage(driver)
        for step in datas:
            method_name = step["action"]
            params = step["params"]   # 字典
            # 根据方法名称获取方法本身 getattr
            # page.goto
            method = getattr(page,method_name)
            # 调用方法method(),字典参数需要解包成url=...
            method(**params)

总结:

测试方法基本不用变化,只需要变化yaml中的数据即可。

yaml中的action代表需要调用的函数,存储在basepage中,缺什么就再进行封装。

有点类似接口的数据驱动思想,测试函数通用,只需要修改excel(测试数据)和basecase(调用方法)

上一篇:父组件调用图表组件根据按钮切换展示数据


下一篇:selenium-浏览器操作封装