Pytest中参数化之CSV文件实战

login.csv文件

'''
        url,body,response
        http://***/loginByPwd,"{""token"": """",""mobile"": ""13500000000"",""pwd"": ""cs123456""}","{""code"": ""1000""}"
        http://***/loginByPwd,"{""token"": """",""mobile"": """",""pwd"": ""cs123456""}","{""code"": ""1001""}"
        http://***/loginByPwd,"{""token"": """",""mobile"": ""13500000000"",""pwd"": """"}","{""code"": ""1001""}"
'''

read_csv.py文件

'''
        import csv

        
        def read_CSV():
            with open('login.csv', 'r', encoding='utf-8') as f:
                reader = csv.reader(f) # <_csv.reader object at 0x000001B016A15C40>可以看到reader是一个内存地址,其实这个时候可以利用list()方法
                # print(reader)
                next(reader) # 忽略首行,next()方法进行第一次取值
                # print(list(reader))
                # l1 = list(reader)
                # print(l1)
                # print(type(l1[0][1]))
                # print(type(l1[0][2]))
                return list(reader)
        # read_CSV()
'''

test_csv_login.py文件

'''
        import pytest
        import requests
        import json
        from pytest_study.read_csv import *

        # read_CSV()返回的数据类型是[[{}]],所以使用'data'不一定非要是列表套字典,记住了...
        @pytest.mark.parametrize(
            'data',
            read_CSV()
        )
        def test_csv_login_001(data):
            r = requests.post(url=data[0], data=json.loads(data[1])) # data[1]为字符串类型
            assert r.json()['code']==json.loads(data[2])['code'] # data[2]为字符串类型

        if __name__ == '__main__':
            pytest.main(['-v', '-s', 'test_csv_login.py'])
'''

csv文件操作

'''
    """
    '''csv文件写入'''
    import csv
    with open('login.csv', 'w', encoding='utf-8') as f:
        writer = csv.writer(f)

        writer.writerow(['url', 'body', 'response']) # 首行,writerow写入一行

        writer.writerows(
            [
            ["http://***/loginByPwd", '{"token": "","mobile": "13500000000","pwd": "cs123456"}', '{"code": "1000"}'],
            ["http://***/loginByPwd", '{"token": "","mobile": "","pwd": "cs123456"}', '{"code": "1001"}'],
            ["http://***/loginByPwd", '{"token": "","mobile": "13500000000","pwd": ""}', '{"code": "1001"}']
            ]
        ) # 内容,writerows写入多行
    '''csv文件读取'''
    import csv
    with open('login.csv', 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        print(reader) # <_csv.reader object at 0x000001B016A15C40>可以看到reader是一个内存地址,其实这个时候可以利用list()方法
        next(reader) # 忽略首行,next()方法进行第一次取值
    """
'''
while True: print('studying...')
原文地址:https://www.cnblogs.com/xuewei95/p/15132281.html