pytest-yaml写测试用例

一、Yaml文件

1、用于全局的配置文件

2、用于写测试用例(接口测试用例)

yaml简介:

数据格式,支持注释,换行、多行字符串、裸字符串

语法规则:

1、区分大小写

2、使用缩写表示层级,不能使用tab键缩进,只能使用空格

3、缩进没有数量,只要前面是对其就行

4、注释是#

数据组成:

1、Map,键值对 键:(空格)值

yaml格式编辑器:https://www.bejson.com/validators/yaml_editor/

多行写法:

maxy:

age: 18

name: gangan

一行的写法:

maxy: {age: 18,name: gangan}

2、数组(list):用一组横线(-)开头

maxy:

  • age: 18
  • name: gangan
    多行的写法
  • maxy:
    • age: 18
    • name: gangan
  • msxy:
    • age: 20
    • name: chichi
      一行数组的写法:
  • maxy: [{age: 18},{name: gangan}]

以下是一个login的例子

login.yaml

二、yaml文件读写

安装yaml库:pip install yaml

#读取yaml文件

def read_yaml(path):

"""

读取yaml文件

:param path: 要读取的yaml文件路径

:return: 返回yaml内容

"""

with open(path,encoding="utf-8") as f:

value=yaml.load(stream=f,Loader=yaml.FullLoader)

return value

def write_yaml(path,data):

"""

写入yaml文件

:param data: 要写入的yaml数据

:return:

"""

with open(path,encoding="utf-8",mode='a') as f:

yaml.dump(data,stream=f,allow_unicode=True)

def clear_yaml(path):

"""

清空yaml文件,一般在整个项目执行之前,清空

:return:

"""

with open(path, encoding="utf-8", mode="w") as f:

f.truncate()

三、登录测试

使用pytest.mark.parametrize进行参数化传入yaml文件,读取yaml文件中用例

@pytest.mark.parametrize('login', read_yaml('.../data/login.yaml'))

def test_login(self, login):

res = requests.request(url=login['url'], method=login['method'], data=login['datas'])

res = json.loads(res.text)

print(res)

code = res['status']

msg = res['message']

复制代码
    assert login['code']==code
    assert login['msg']==msg