第五节:独立接口测试,面向对象测试脚本,读取csv文件,并生成测试报告

原则:
一个接口的测试,对应一个类。便于后续的框架管理

类定义:
属性:接口访问地址,和一些固定的测试数据
方法:具体的测试方法过程

一、代码实现,一组数据的接口测试:

#面向对象方法实现,注册接口测试

import requests
class register():
    def __init__(self):
        self.url = "http://localhost:8080/jwshoplogin/user/register.do"
        self.uerinfo = {}
        self.uerinfo = {
            "username" :'章鱼',
            "password" : '111111',
            "email" : '111178@qq.com',
            "phone" : '13244443333',
            "question":'章鱼是什么动物',
            'answer' :'鱼类'}
    def test_register(self):
        sess = requests.session()
        response = sess.post(self.url,data=self.uerinfo).json()
        print(response)

if __name__ == '__main__':
    obj = register()
    obj.test_register()

二、变量实现,多组数据传值:
属性不能放在初始化里,应该放在方法内部。
这里存在一个疑问:关于要传入的参数userinfo的位置。因为在方法里需要给这个参数赋值,那么这个参数应该是当前方法里的参数。

#面向对象方法实现
#用户名和邮箱的校验接口

import requests
import csv

class check_vaild():
    def __init__(self):
        self.url = "http://localhost:8080/jwshoplogin/user/check_vaild.do"

    def test_check_vaild(self):
        uerinfo = {}
        with open('check_user.csv','r') as f:
            reader = csv.reader(f)
            for row in reader:
                uerinfo['str']=row[0],
                uerinfo['type']=row[1],
                sess = requests.session()
                response = sess.post(self.url,data=self.uerinfo).json()
                print(response)

if __name__ == '__main__':
    obj = check_vaild()
    obj.test_check_vaild()

执行报错:

Traceback (most recent call last):
  File "G:/PycharmProjects/InterFaDemo/pro_interface_obj/check_UNameEmail_obj.py", line 24, in <module>
    obj.test_check_vaild()
  File "G:/PycharmProjects/InterFaDemo/pro_interface_obj/check_UNameEmail_obj.py", line 19, in test_check_vaild
    response = sess.post(self.url,data=self.uerinfo).json()
AttributeError: 'check_vaild' object has no attribute 'uerinfo'

错误分析:
check_vaild类没有属性uerinfo

 response = sess.post(self.url,data = selef.uerinfo).json()

userinfo没有写在初始化的init里,不是check_vaild类的参数,所以不能加self。直接传参就可以
而第一个例子里,userinfo是类的初始化参数。

response = sess.post(self.url,data = uerinfo).json()

三、面向对象,脚本实现。读取csv文件测试数据,生成测试报告:

#面向对象方法实现
#用户名和邮箱的校验接口

import requests
import csv

class check_vaild():
    def __init__(self):
        self.url = "http://localhost:8080/jwshoplogin/user/check_vaild.do"
    def test_check_vaild(self):
        uerinfo = {}
        f2 = open('output.csv','w')
        f =  open('check_user.csv','r')
        reader = csv.reader(f)
        next(f)
        for row in reader:
            uerinfo["str"]=row[0],
            uerinfo["type"]=row[1],
            sess = requests.session() #用requests的sessions方法,获得请求对象
            response = sess.post(self.url,data = uerinfo).text #这个请求对象,调用post方法传入参数
            print(response)
            res = response.find(row[2])
            if res>0:
                f2.write(row[0]+','+row[1]+','+row[2]+','+'测试通过'+','+response+'\n')
            else:
                f2.write(row[0]+','+row[1]+','+row[2]+','+'测试失败'+','+response+'\n')
        f2.close()
if __name__ == '__main__':
    obj = check_vaild()
    obj.test_check_vaild()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值