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()函数封装读取文件,作用于给调用文件里的参数
优点
1、yaml文件可全局内容替换
2、execl可读性高,简单易懂
缺点:
1、yaml可读性差,不适用于复杂场景
2、execl后期维护成本高,定位方式发生变化时需要修改所有相关联的execl
#加载项目地址
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)