重组关键字

Common 目录用于存放自定义的关键字,类似于PO模式中的Page,可以将用例中公共逻辑抽离出来保存到这里,它需要一个关键字来表达它的作用,所以我们需要为它指定一个唯一的名字,以便于我们在用例中可调用。

关键字结构:
common_action 关键字名称
description 关键字描述,简短有力
input 传入参数,一个不漏
output 返回参数,暂未实现
steps 执行步骤

自定义关键字:Common/common.yaml

  1. common_action:
  2. description: 公共方法
  3. input: [key,value]
  4. output: []
  5. steps:
  6. - click(${value})
  7. - sleep(5)
  8. common_action1:
  9. description: 公共方法1
  10. input: [key,value]
  11. output: []
  12. steps:
  13. - click(${value})
  14. - 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('测试数据')