测试用例步骤改造-参数化数据驱动

原本的用例

    def test_native(self):

        self.driver.find_element(By.XPATH,"//*[@text='Native']").click()
        self.driver.find_element(By.XPATH,"//*[@text='Native_Video']").click()

欲将find_element的查找方式类型和值及后续交互动作以YAML的方式存贮下来,如果UI元素改变,不需要修改原本用例代码,修改或者新增YAML即可。

将可能发生变更的元素查找放入YAML内:
YAML

创建解析YAML和处理查找定位的工具代码:

class YamlCase:
    def __init__(self,path):
        #open file
        file = open(path,'r')
        #read yaml to data
        self.steps = yaml.safe_load(file)

    def run(self,driver:WebDriver):
        # traverse yamldata,then
        for step in self.steps:
            # if item is dict
            if isinstance(step,dict):
                # find element via key
                # if key is id, find element by id
                if 'id' in step.keys():
                    element = driver.find_element(By.ID,step['id'])
                # if key is xpath , find element by xpath
                elif 'xpath' in step.keys():
                    element = driver.find_element(By.XPATH,step['xpath'])
                # if key is android UIAutomator , find element by ui automator
                elif 'android_uiautomator' in step.keys():
                    element = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,step['android_uiautomator'])
                else:
                    print(step.keys())

                # interaction
                # if key is input , send keys
                if 'input' in step.keys():
                    element.send_keys(step['input'])
                # if key is get , get attribute
                elif 'get' in step.keys():
                    element.get_attribute(step['get'])
                # else click
                else:
                    element.click()

最后, 原本用例只需要调用YamlCase类,

    def test_native(self):
        YamlCase('test_case.yaml').run(self.driver)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值