概述:
自动化测试中,需要通过数据驱动来达到测试目的,比如验证登录功能,整个公司有100人,并且HR部门结果是动态变更的,每个用户的密码也是动态的。这时候可以使用动态的用户表作为参数传入。下面的例子是简化版本,没有贴出完整的python脚本。
Conditions:
1、需要导入ddt第三方库from ddt import ddt, data, file_data, unpack
2、使用unittest + python作为自动化测试框架
场景1:单个数据
@ddt
classMoveToABCTest(unittest.TestCase):
@data("AAAA-2019080900504")
def test_s1_movetoABC(self,item):
#item会遍历data中的实际值,如本例的"AAAA-2019080900504"
print(item)
注意:类上的装饰器(注解)ddt,不要忘记
场景2:多个数据
@ddt
class MoveToABCTest(unittest.TestCase):
@data("AAAA-2019080900504","BBBB-2019080900505")
def test_s1_movetoABC(self,item):
#item会遍历data中的实际值,如本例的"AAAA-2019080900504","BBBB-2019080900505"
print(item)
场景3:组合数据
@ddt
class MoveToABCTest(unittest.TestCase):
@data(("zhangsan","123456"),("wangwu","123456"))
@unpack
def test_s1_openhomepage(self,username,password):
#username、password两个形参分别对应data中的数据,如("zhangsan","123456"),然后遍历之
print(username)
print(password)
注意:测试方法中的装饰器(注解)unpack,不要忘记
场景4:引入外部文件
源数据文件data.yml
[{
"data":{
"yearmonth":"2019-10",
"code":"11111",
"code2":"AAAAA"
}
},
{
"data":{
"yearmonth":"2019-10",
"code":"22222",
"code2":"BBBBB"
}
}
]
测试代码:
@ddt
class MoveToAAATest(unittest.TestCase):
@file_data("E:\project\python\data\getBudget2.yml")
@unpack
def test_s2_getByOneDate(self,**kwargs):
#获取数据,如requests.post,可以直接将data传入
data= kwargs.get("data")
print(data)