接着上一篇继续分享
我们都知道pytest的参数化常用的方式是通过装饰器
@pytest.mark.paramtise来实现参数化,但是数据还是主要写在代码里面,这次分享的是通过读取yaml文件,来实现参数
一、yaml文件
yaml文件是一种标记语言,它使用空白符号缩进,使看起很清晰明了,特别适合用来表达或编辑数据结构、各种配置文件等,yaml的文件的后缀为.yml,比如test.yml
yaml支持多种数据类型,对象、数组、纯量,yaml的格式是通过key: value方式进行,示例yaml文件格式如下:
-
method : post
url: "https://api2.mubu.com/v3/api/user/phone_login"
data:
phone: "13528xxxxx"
password: "Aa123456"
callbackType: 0
-
method: post
url: "https://api2.mubu.com/v3/api/user/phone_login"
data:
phone: "135288728xxxx"
password: "Aa1234568"
callbackType: 0
二、python读取yaml文件
python读取yaml文件,python给我们提供了一个第三方的库pyaml,通过pip命令安装
pip install pyaml
读取yaml文件示例代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import yaml
with open('login.yml', encoding="utf-8") as f:
yaml_data = yaml.safe_load(f)
print(yaml_data)
#读取后的返回的内容如下:
[{'method': 'post', 'url': 'https://api2.mubu.com/v3/api/user/phone_login', 'data': {'phone': '13528xxxxx', 'password': 'Aa123456', 'callbackType': 0}}, {'method': 'post', 'url': 'https://api2.mubu.com/v3/api/user/phone_login', 'data': {'phone': '135288728xxxx', 'password': 'Aa1234568', 'callbackType': 0}}]
读取出来的数据是一个列表,列表里面每一项是一个字典
# 我们将其封装成一个方法
def read_yaml(path):
with open(path, encoding="utf-8") as f:
yaml_data = yaml.safe_load(f)
return yaml_data
三、结合pytest实现读取yaml参数化
示例代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from request_handler import request_handler
from yamlRead import read_yaml
class Testrequests:
@pytest.mark.parametrize('test_data', read_yaml('login.yml'))
def test_requests(self, test_data):
url = test_data['url']
method = test_data['method']
data = test_data['data']
r = request_handler(method, url, data)
print(r.json())
assert r.status_code == 200
再次执行该测试脚本,实际上运行了两次,实现了参数化。效果如下:
今天的内容就分享到这里,明天分享logging日志。
本文分享自 暴走的软件测试Tester 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!