ddt数据驱动

一、数据驱动

1、ddt+unittest结合,主要通过装饰器的方式来实现数据驱动(常用方式)

@ddt 类装饰器,作用是标记这个类使用ddt数据驱动框架
@data 函数装饰器,作用是给函数传值
@unpacke 函数装饰器,作用是给数据解包的。一般应用元祖和列表
@file_data 函数装饰器,作用是以直接法取json/yaml文件。

举例说明:


test_data = [{
       "clientCode": "韩",
       "topic": "",
       "content": "测试接口2",
       "resrcType": "0",
       "assert": "400"
   }]

@ddt.ddt
class Test(unittest.TestCase):
   @ddt.data(*test_data)
   def test_ddt(self, value):   # 定义一个变量value来接收ddt.data中的数据

2、ddt+pytest结合
@pytest.mark.parametrize(“参数名”, 数据)
举例说明:

@pytest.mark.parametrize("user", ['小明', 'xiaohua'])  ,作用于给函数单参数传值
@pytest.mark.parametrize('name',getData())    ,getData()函数封装读取文件,作用于给调用文件里的参数

二、execl/yaml文件优劣

优点
1、yaml文件可全局内容替换
2、execl可读性高,简单易懂

缺点:
1、yaml可读性差,不适用于复杂场景
2、execl后期维护成本高,定位方式发生变化时需要修改所有相关联的execl

设计如下格式的execl可以实现复杂场景的定位,且可读性高ddt数据驱动_第1张图片ddt数据驱动_第2张图片

三、函数封装

#加载项目地址
def load_url(self,ur1): 
  self.driver.get(url)
#元素定位
def locator(self,loc):
  ele=self.driver.find_element(*loc)
  return ele
#输入
def input(self,1oc ,value):
  #元素定位,执行输入
  self.locator(1oc). send_ keys(value)

你可能感兴趣的:(selenium,python,开发语言,selenium)