zoukankan      html  css  js  c++  java
  • 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...')
  • 相关阅读:
    Ubuntu中root用户和user用户的相互切换
    Linux扩展权限
    計蒜客/填志愿(匈牙利算法)
    計蒜課/排澇(Edmond-Karp)
    計蒜客/數正方形(dp)
    51nodcontest#24 A(xjb)
    計蒜客/节食的限制(01背包)
    計蒜客/小教官(xjb)
    atcoder#073D(枚舉)
    Educational Codeforces Round 20 C(math)
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15132281.html
Copyright © 2011-2022 走看看