接口测试-用csv文件更新用户信息-unittest封装

接口测试-用csv文件更新用户信息-unittest封装,第1张

一、语法

1.返回系统完整的路径,再到指定的系统路径

        # 获取运行脚本的路径
        p1=os.getcwd()
        # 返回完整的路径(获取当前运行脚本的目录,路径分隔符)
        p2=os.path.abspath(os.path.dirname(p1)+os.path.sep+'.')
        # 指定路径脚本
        self.fpath=p2+'/data//test_updateuser.csv'

2.获取接口的sessionid

            self.sessionid=dict(response.cookies)['JSESSIONID']
            print("sessionid的值",self.sessionid)




            response=s.post(url,data=info,cookies=session1).text
            print("第二个方法",response)

3.读取数据,从第二行开始遍历

num=0
        for row in rows:
            # print("第二个方法里面的",row)
            num=num+1
            # 需要满足,如果是第二行,才会去执行以下代码
            if num >1:
                # 先去取url的值
                url=row[0]
                # 再是去取入参
                # 入参是字典形式,所以要定义一个空的字典
                print('第二个方法',url)
                # row[2]是键值的对数
                j=int(row[2])
                for i in range(3,j*2+3,2):
                    info[row[i]]=row[i+1]
二、脚本
# 用csv文件更新用户信息,先登录,后更新用户信息,先获取完整的系统路径,再到指定的路径
import csv
import os
import unittest
import requests


class csvupdate(unittest.TestCase):
    # 登录接口
    def setUp(self):
        # 打开csv文件
        # 获取运行脚本的路径
        p1=os.getcwd()
        # 返回完整的路径(获取当前运行脚本的目录,路径分隔符)
        p2=os.path.abspath(os.path.dirname(p1)+os.path.sep+'.')
        # 指定路径脚本
        self.fpath=p2+'/data//test_updateuser.csv'
        file=open(self.fpath,'r')
        # 读取文件
        rows=csv.reader(file)
        for row in rows:
            # 取出url的值
            url=row[0]
            # print(url)
            # 取出入参
            # num=0
            # j是指统计参数键值对的个数
            # j=row[2]
            # i是指遍历的次数
            # 为什么会写死,是因为如果以变量的形式写的话,会把逐行所有参数都读出来,实际上只要读第一行的参数就好
            # 所以登录接口参数取值是写死的
            # for i in range(3,j*2,2):
            # 定义一个空的字典数据
            userinfo={}
            userinfo[row[3]]=row[4]
            userinfo[row[5]]=row[6]
            # print(userinfo)
            # 发送请求,用第一种方法
            response=requests.post(url,data=userinfo)
            # print(response)
            # 因为更改用户信息需要先登录,所以要从登录接口中获取sessionid,sessionid是服务器端发送给客户端的
            # session的有效时间是30分钟,sessionid是以cookie的形式存在客户端的,如果关闭掉浏览器,那么session
            # id就会时效,再次访问url时,服务器会给客户端发送一个新的sessionid
            # 从response中获取sessionid
            # 从response中获取cookies,这个response是不能通过.text转换成str类型,要不然下面的cookie
            # 方法用不了
            self.sessionid=dict(response.cookies)['JSESSIONID']
            print("sessionid的值",self.sessionid)
            break

    # 更新用户信息接口
    def test_update(self):
        # 打开文件
        file=open(self.fpath,"r")
        # 读取文件
        rows=csv.reader(file)
        info={}
        num=0
        for row in rows:
            # print("第二个方法里面的",row)
            num=num+1
            # 需要满足,如果是第二行,才会去执行以下代码
            if num >1:
                # 先去取url的值
                url=row[0]
                # 再是去取入参
                # 入参是字典形式,所以要定义一个空的字典
                print('第二个方法',url)
                # row[2]是键值的对数
                j=int(row[2])
                for i in range(3,j*2+3,2):
                    info[row[i]]=row[i+1]
                # 发送请求,用第二种方法
                s=requests.session()
                session1={'JSESSIONID':self.sessionid}
                response=s.post(url,data=info,cookies=session1).text
                # print("第二个方法",response)
                self.assertIn(row[1],response)

if __name__ == '__main__':
    # # 实例化类
    # obj=csvupdate()
    # # 用类去调用方法
    # obj.test_update()
    unittest.main()












欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/2990089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存