python数据驱动

1、parameterized.parameterized

import unittest
from parameterized import parameterized

class TestAdd(unittest.TestCase):
    ss = [
        {'username': '15669910105'},
        {'password': 'a123456'},
        {'username': '15669910105', 'password': '123456'},
        {'username': '15669910105', 'password': 'a123456'}
    ]
    datas = [str(data) for data in ss]  # str方法将字典转化为字符串

    @parameterized.expand(datas)   #取出的是list的元素
    def test_add(self,body):
        print(body)

if __name__ == '__main__':
    #Pycharm执行时注意鼠标需要放在 unittest.main(verbosity=2)代码块的位置,否则会报错
    unittest.main(verbosity=2)  # verbosity表示测试结果的信息复杂度
View Code

2、pytest.mark.parametrize

import pytest
import requests

datas = [
    {'request': {'method': 'get', 'url': 'https://www.baidu.com'}, #请求
     'assert': ['res.status_ code==200']},  #断言
    {'request': {'method': 'post', 'url': ' http://127.0.0.1:5000/login','json':{'username': '15669910105', 'password': 'a123456'}},
     'assert': ['res.status_ code==200']},
]

@pytest.mark.parametrize("data",datas)
def test_(data):
    print(data)
    da = data.get('request')#请求数据
    res =requests.request(method=da.get("method"),url=da.get("url"),json=da.get("json"))
    print("响应数据",res)

if __name__ == '__main__':
    pytest.main(['-s', 'demo8.py'])  #以print信息显示
View Code

3、ddt、unpack

import unittest
from ddt import ddt,data,unpack

datas =  [
    {'first': 1, 'second': 3, 'third': 5},
    {'first': 4, 'second': 7, 'third': 8}
]
@ddt
class MyTesting(unittest.TestCase):
    def setUp(self):
        print('this is the setUp')

    @data(*datas) #对于传过来的值需要指针
    @unpack
    def test_dicts(self, first, second, third):
        print(first,second,third)

    def tearDown(self):
        print('this is tearDown')

if __name__ == '__main__':
    unittest.main(verbosity=2)
View Code

猜你喜欢

转载自www.cnblogs.com/shuzf/p/11734045.html