一个网站多个域名 seo,wordpress 横排显示,手机怎么制作图片,信息服务平台有哪些网站我们在做数据之前要知道几个问题
1、在代码层面怎么来数据驱动
2、yaml文件是什么
3、怎么用yaml文件实现对应的数据驱动
我们用的是pytest框架所以相对来说是简单的#xff0c;我们通过pytest框架来实现#xff0c;而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p… 我们在做数据之前要知道几个问题
1、在代码层面怎么来数据驱动
2、yaml文件是什么
3、怎么用yaml文件实现对应的数据驱动
我们用的是pytest框架所以相对来说是简单的我们通过pytest框架来实现而框架中要数据驱动用到我们装饰器就好啦pytest.mark.parametrize(参数名参数数据)
那参数化就是DDT 把对应的数据提取出来 进行统一维护
参数1参数的名字
参数2: 参数的数据列表
那我们的参数数据要什么数据格式我们知道有字典 元祖 字符串....
我们要对应的数据话肯定是多组数据
[数据1数据2数据3] 列表
数据1数据2数据3元祖
[{k:v},{k:v},{k:v}]列表套字典------推荐用的比较多
[[1],[2],[3]]列表套列表
[(1),(2),(3)]列表套元祖 好 那我们现在简单写一个小demo
import pytest
# data 是我们的数据
data [小王,小张,小李]
# 通过用这个装饰器data传入的参数列表需要有一个参数名来接收name
pytest.mark.parametrize(name,data)
# 给到name以后 需要给到test_01参数 去接受这个值
def test_01(name):print(当前运行的用户名是,name)if __name__ __main__:pytest.main([-vs])运行结果
我们中间的数据项有多少个他就会执行多少次
我们的data中有三个 就执行三次
那如果列表套列表我们要怎么写呢--通过下标获取
import pytest
# data 是我们的数据
data [[小王,22],[小张,23],[小李,24]]
# 通过用这个装饰器data传入的参数列表需要有一个参数名来接收name
pytest.mark.parametrize(name,data)
# 给到name以后 需要给到test_01参数 去接受这个值
def test_01(name):print(当前运行的用户名是,name[0])print(当前运行的用户年龄是, name[1])if __name__ __main__:pytest.main([-vs])
运行结果 好 我们学会可以后在项目中怎么应用呢
我们对应的登陆中是不是有对应的账户名密码等等一些参数
那我们可以在登陆写一下测试用例
登陆成功 密码错误 用户名错误 等等。。。
那我们来写一下
先导包
pytest.mark.parametrize()
首先我们的格式是列表套字典
data [{username: aaa, password: 1245346, res: 登录成功},{username: aaa, password: 1234ddd56, res: 密码错误},{username: djjdjd, password: 15634432, res: 用户名不存在}
] 然后把data和我们的参数传入装饰器中
pytest.mark.parametrize(case_info,data)
再把我的case_info传入方法中
def test_01_login(case_info):
接下来我们data中和断言中也需要相应改动---引用上面的数据 data {accounts: case_info[username],pwd: case_info[password], type: username}
assert mag_ret case_info[res], f错误我们当前返回的值是:{mag_ret}
写好啦 我们接下来运行看看
第一个用例通过 这是正向测试 期望和实际一样 第二个也是 我们改了密码 期望是密码错误 实际返回的也是密码错误 第三个 账号密码都不对 期望返回的是用户名不存在但是实际返回的是登陆账号不存在 我们看懂了DDT了以后只需要维护我们的测试用例如需要测试 直接引用就好啦 是不是很方便
但是目前我们只是把测试数据提取出来
那不同的接口可不可以把接口全部提取出来呢---可以
因为我们发送请求无非是四要素不一样 你需要提取什么就提取什么
那我们这些都提取出来我们可以通过yaml文件来进行操作或者说我们需要有一个存放数据的地方excel 、yaml 也可以数据库这些都是可以的。
以上我们知道了 我们的数据驱动是通过装饰器来实现
那我们接下来说yaml是什么