• 【移动自动化】【八】数据驱动


    数据驱动

    1. 基于数据流完成流程调度,数据来源于外部,可以从execl,yaml,数据库中获取
    2. 使用yaml, json等读取数据
    3. 流程: 读取外部文件 -> 动态创建测试用例

    yaml

    1. pip install pyyaml
    2. yaml文件操作https://github.com/yaml/pyyaml?spm=a2c6h.12873639.0.0.70ab3ab4BvVbOE
    3. 简单的步骤驱动例子
    4. yaml文件: ch2/case.yaml
    # 简单的case_yaml模板
    - Descripton: 进入搜索页面
      Methods: id
      Value: ivSearch
      Action: click
    - Descripton: 搜索测试数据
      Methods: id
      Value: etSearch
      Action: send_keys
      data: 测试
    - Descripton: 获取搜索值
      Methods: id
      Value: tvSearchResult
      Action: text
    
    1. 测试步骤驱动 ch2/test_yaml.py
      1. 读取yaml文件并且以dict格式输出
      2. 定义drver: WebDriver (等同于把之前的self.driver传给数据驱动方法)
      3. 循环每个字典,执行不同的测试步骤
      4. method函数: 定位有不同方式,这边单独封装,主要涉及的有id,xpath,accessibility_id
      5. 测试驱动,直接调用self.method函数
    class TestCaseTemplate:
        def __init__(self, path):
            with open(path, 'r', encoding="utf-8") as file:
                self.steps = yaml.safe_load(file)
    
        def method(self, driver: WebDriver, method, value):
            ele = None
            if method == 'id':
                ele = driver.find_element_by_id(value)
            elif method =='xpath':
                ele = driver.find_element_by_xpath(value)
            elif method == 'accessibility':
                ele = driver.find_element_by_accessibility_id(value)
            else:
                return 'No element'
            return ele
    
        def run(self, driver: WebDriver):
            for step in self.steps:
                elemet = None
                if isinstance(step, dict):
                    if 'Methods' in step.keys() and 'Value' in step.keys():
                        elemet = self.method(driver, step['Methods'], step['Value'])
                    else:
                        print(step.keys())
                    if 'Action' in step.keys():
                        if 'click' in step['Action']:
                            elemet.click()
                        elif 'send_keys' in step['Action']:
                            if 'data' in step.keys():
                                elemet.send_keys(step['data'])
                            else:
                                print('没有输入的测试数据')
                        elif 'text' in step['Action']:
                            data = elemet.text
                            print(data)
    

    github

    https://github.com/wangxiao9/appium_demo.git

  • 相关阅读:
    js数组
    关于编程,程序员的一些语录
    css心得
    js函数
    一些电脑基础知识
    gnome3安装
    C学习小记
    ubuntu重装系统后
    elinks文字浏览器
    快捷方式
  • 原文地址:https://www.cnblogs.com/totoro-cat/p/13463212.html
Copyright © 2020-2023  润新知