本文主要是介绍Pytest参数化 ---parametrize,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参数化的本质就是:对列表中的对象循环,然后再赋值给具体的对象
import pytestdef add(a, b):return a + b@pytest.mark.parametrize('a,b,result', [(1, 2, 3),(2, 3, 5),('Hi,', 'xia', 'Hi,xia'),(1.0, 1.0, 2.0),(1, 1.0, 2.0),(0, 0, 0)])
def test_add_many(a, b, result):assert add(a, b) == result
把测试数据拿出来单独存储
import pytestdef add(a,b):return a+bdef listParam():list1=[(1, 2, 3),(2, 3, 5),('Hi,', 'xia', 'Hi,xia'),(1.0, 1.0, 2.0),(1, 1.0, 2.0),(0, 0, 0)]return list1@pytest.mark.parametrize('a,b,result',listParam())
def test_add_many(a,b,result):assert add(a,b)==result
结合具体的数据类型演示参数化的应用
import pytestdef add(a, b):return a + bdef dataList():datas = [[1, 1, 2],['a', 'b', 'ab'],[0, 0, 0],[2, 2, 4],['x', 'y', 'xy'],]return datas'''list'''
@pytest.mark.parametrize('a,b,result', dataList())
def test_add_list(a, b, result):assert add(a=a, b=b) == result'''tuple'''def dataTuple():datas = [(1, 1, 2),('a', 'b', 'ab'),(0, 0, 0),(2, 2, 4),('x', 'y', 'xy'),]return datas@pytest.mark.parametrize('a,b,result', dataTuple())
def test_add_tuple(a, b, result):assert add(a=a, b=b) == result'''dict'''def dataDict():datas = [{'a': 1, 'b': 1, 'result': 2},{'a': 'a', 'b': 'b', 'result': 'ab'},{'a': 0, 'b': 0, 'result': 0},{'a': 2, 'b': 2, 'result': 4},{'a': 'x', 'b': 'y', 'result': 'xy'},]return datas@pytest.mark.parametrize('data', dataDict())
def test_add_dict(data):assert add(a=data['a'], b=data['b']) == data['result']
通过pytest的参数化对json文件操作并转成pytest测试代码:
r.json()是dict类型的
import pytest
import requests
import jsondef getJson():return json.load(open('postman.json', encoding='utf-8'))['item']@pytest.mark.parametrize('data', getJson())
def test_postman_json(data):r = requests.request(url=data['request']['url'],method=data['request']['method'],json=json.loads(data['request']['body']['raw']))'''用json.loads()把原本是str类型的参数转成dict类型,请求的参数转成通用的json格式''''''用json.dumps把原本是dict类型的参数转成str类型,因为响应参数是str类型的''''''r.json()是dict类型的''''''断言比较,数据类型必须相同'''assert json.dumps(r.json()) in json.dumps(data['response'][0])
这篇关于Pytest参数化 ---parametrize的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!