重组关键字
Common
目录用于存放自定义的关键字,类似于PO模式中的Page,可以将用例中公共逻辑抽离出来保存到这里,它需要一个关键字来表达它的作用,所以我们需要为它指定一个唯一的名字,以便于我们在用例中可调用。
关键字结构:common_action
关键字名称description
关键字描述,简短有力input
传入参数,一个不漏output
返回参数,暂未实现steps
执行步骤
自定义关键字:Common/common.yaml
common_action:
description: 公共方法
input: [key,value]
output: []
steps:
- click(${value})
- sleep(5)
common_action1:
description: 公共方法1
input: [key,value]
output: []
steps:
- click(${value})
- sleep(5)
调用方式:在用例中call + 关键字名称为调用该关键字的语法,参数个数应和 input
相对应
- call common_action('key','测试数据')
彩蛋**:APP自动化区分iOS、Android,为了更进一步提升用例可维护性,框架可根据 platformName
执行对应目录下的自定义关键字,既达到了用例分层的目的,同时双端可共用一份用例,大大节约了编写成本和维护成本
结构如下:
├── Common
| ├── Android
| ├── login.yaml
| ├── iOS
| ├── login.yaml
| ├── common.yaml
├── Resource
| ├── test.png
├── Report
├── Script
| ├── __init__.py
| ├── test.py
├── TestCase
| ├── test.yaml
├── config.yaml
├── data.yaml
Android端自定义登录关键字:Common/Android/login.yaml
login:
description: Android端登录
input: [key,value]
output: []
steps:
# Android 登录逻辑
iOS端自定义登录关键字:Common/iOS/login.yaml
login:
description: iOS端登录
input: [key,value]
output: []
steps:
# iOS 登录逻辑
测试用例:TestCast/test.yaml
module: HomePage
skip: false
description: 登录并检查首页
steps:
- call login('admin', '123456') # 根据运行平台自动调用对应的关键字
构造关键字
很多时候一些与业务相关、甚至需要更深层次定制等操作是无法通过公共关键字来实现,所以需要自己编写脚本调用,Scripts
为Python脚本目录,在 data.yaml 下 keywords
中注册方法名后,就可直接在用例中调用脚本,而且框架允许导入 driver
模块来获取当前驱动实例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from fasttest.driver import *
def find_elements_by_id(id):
'''
直接调用appium、macaca底层api
:param id:
:return:
'''
element = wd.driver.wait_for_element_by_name(id)
return element
def test():
'''
:return:
'''
pass #调用普通脚本
调用方式:如果需要拿到函数返回的数据,可以直接用变量保存,如不需要,可以直接调用函数
- ${title} = find_elements_by_id('百度')
- test('测试数据')