python存取dict到csv中,进行接口自动化测试

目的:将数据写入csv文件,并保存

要求:现在有多个测试用例,每个用例都是一个dict,需要将所有用例存储到一个csv文件中 

 #将数据存入csv
        # case1 = [{'name': 'Tony', 'age': 17}]
        # case2 = [{'name': '李华', 'age': 21}]
        #数据样例

flag = 0 
def write_csv(self, case):
        header = list(case.keys())#将key作为表头(列名)

        global flag #使用关键字声明全局变量

        path ='/Users/test.csv'#文件存储路径,没有的话会新建文件

        with open(path,'a',newline='',encoding='utf—8') as f:
        #以‘a'方式打开,是追加写入,newline 等于空字符,避免空行,编码为utf-8
            writer = csv.DictWriter(f,fieldnames=header)

            if  flag == 0:#第一次写入时写入表头
                writer.writeheader()
                writer.writerow(case)#写入一行
                flag = 1
            else:#再次调用时只写入值
                writer.writerow(case)

目的:读取csv文件中的数据,做接口自动化测试

要求:每行数据是一个测试用例,运行脚本后,自动按顺序执行测试用例

1.请求方式不同,需要的参数不同。所以有缺失值需要处理

2.需要将返回的状态码写入原文件

参考:pandas选择单元格,选择行列 - GUXH - 博客园

import pandas as pd
#使用pandas库读取csv文件

class option_csv(object):

    def __init__(self):
        self.file = pd.read_csv(path,index_col=0,header=0)
        self.file = self.file.where(self.file.notnull(),None)#将nan替换为none

    def get_line(self):#获取所有行数
        lens = len(self.file)
        return lens

    def get_row(self,row):#获取某列的所有数据
        return self.file.iloc[row,:]


    def write_result(self,result,row):#修改第row行result的内容
        self.file.loc[row,'result'] = result
        self.file.to_csv(path)

'''
将数据从csv中取出
'''
from DataBase import read_excel

class read_data(object):
    def __init__(self):
        self.files = read_excel.option_csv()


    def get_value(self,row):
        self.case = self.files.get_row(row)

        self.name = self.case["case_name"]
        self.method = self.case['method']
        self.params = self.case['parame']
        self.url = self.case['url']
        self.data = self.case['data']
        self.body = self.case['body']
        self.espect_code = str(self.case["espect_code"])

        return self

这里简单用了unittest和requests库

'''
读取测试用例运行
'''

import unittest
import requests
from DataBase import read_data, read_excel


class test_run(unittest.TestCase):
    def setUp(self) -> None:
        print("====begin the test====")

    def test_run(self):
        nrows = read_excel.option_csv().get_line()
        get = read_data.read_data()

        for i in range(1, nrows):
            case = read_data.read_data().get_value(i)
            try:
                req = requests.request(method=case.method, url=case.url, params=case.params, json=case.body,
                                       data=case.data)
                res = req.status_code
                self.assertEqual(case.espect_code, res, msg=f"{case.name}is failed" + "\n" + f"{req.text}")
                read_excel.option_csv().write_result(res, i)

            except (requests.ConnectionError, requests.HTTPError, requests.URLRequired, requests.Timeout) as e:
                print(e)

    def tearDown(self) -> None:
        print("====end the test====")


if __name__ == '__main__':
    unittest.main()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值