关键字驱动的用法(跟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(调用方法)