1、@pytest.mark.parametrize()
基本用法
@pytest.mark.parametrize(args_name, args_value)
args_name
:参数名,用于将参数值传递给函数/方法
args_value
:参数值(列表、元组、字典列表、字典元组)有多少值用例就会执行多少次。当参数值为字典等其他非字符串类型时,需要转换成字符串类型。
最基本的用法:
例1
执行用例:
例2:列表中含字典
执行结果:
例3:多参数
执行结果:
2、yaml格式测试用例读写
大家应该记得,fixture
有一个params
参数,可以进行用例传参,但是fixture
更倾向于前后置操作,而yaml更多用于实现参数化。
yaml
是一种数据格式,扩展名可以是.yaml
,.yml
,支持#
注释,通过缩进表示层级,且区分大小写。
用途:
1、做配置文件;2、编写自动化测试用例
数据组成
1、字典,即Key-Value
键值对【注意冒号后面要加空格】
2、列表,使用-
表示
使用前确认你已经安装了PyYAML
库
例如:
我们先在user_manage
文件夹新建get_token.yaml
文件,然后在common
文件夹新建yaml_util.py
文件
get_token.yaml
文件内容:
yaml_util.py
文件内容
【说明】
我们在做持续集成的时候,目录是不能写死的,不然一旦项目位置发生改动,代码就会集体报错。所以我先写的read_yaml
方法,打开文件时需要穿路径,然后我在上面写了个获取项目根目录的方法,因为当前文件已经知道是在common
目录下,所以我调用split
方法,取第一个值,这样获得的就是根目录了。然后具体路径写上去的。读取的方法就是yaml.load()
,后面Loader
表示全部加载。最后打印了一下方法执行结果。
执行结果:
我们再把get_token.yaml
文件内容改为:
执行结果: