初练接口测试脚本

引言:直接去编写一个完全没有接触过得脚本无疑是非常困难的,但是采取拆分以及迭代的方法一步步编写脚本就会好理解很多。

目录

v1.0 发送请求,获取响应结果

v2.0 传入接口测试数据

v3.0 对响应结果进行校验,得出测试结论

v4.0 从文件中传入多组测试数据

v5.0  把每一组测试数据对应的测试结果写入接口测试报告中

v6.0 使用面向对象的思想去设计脚本


接口信息
接口请求地址:http://localhost:8080/jwshoplogin/user/login.do
接口请求参数:1.username:李明 2.password:123456
预期结果:登录成功、用户名不存在、密码错误


v1.0 发送请求,获取响应结果

  1. 定义接口请求地址:url = "接口请求地址"
  2. 通过request对象调用post方法发送请求,并接受响应:response = request.post(url).text
  3. 调式脚本:print响应结果

v1.0代码如下:

# 针对登录接口进行测试
# 接口请求地址:http://localhost:8080/jwshoplogin/user/login.do
# 接口请求参数:1.username:李明 2.password:123456
# 预期结果:登录成功、用户名不存在、密码错误
import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
response = requests.post(url).text
print(response)

运行结果如下,因为没有输入参数,所以可以当成是输入为空。

{"status":1,"msg":"用户名不存在"}

v2.0 传入接口测试数据

  1. 定义字典类型进行接口参数的赋值:userinfo = {"username":"李明", "password":"123456"}
  2. 传入到post方法中:response = request.post(url, data=userinfo).text

v2.0代码如下:

import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
userinfo = {"username":"李明",
            "password":"123456"}
response = requests.post(url, data=userinfo).text
print(response)

运行结果如下:

{"status":0,"msg":"登录成功"}

v3.0 对响应结果进行校验,得出测试结论

  1. 调用find方法,查找返回的字符中是否存在对应的信息:msg = response.find("预期结果")
  2. 判断语句得出相关的测试结论先用if语句实现功能。

v3.0代码如下:

import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
userinfo = {"username":"李明",
            "password":"123456"}
response = requests.post(url, data=userinfo).text
print(response)
msg = response.find("登录成功")
if msg > 0:
    print("测试通过")
else:
    print("测试失败")

v4.0 从文件中传入多组测试数据

  1. 准备测试数据的csv文件
  2. 读取csv文件中的测试数据
    1. 以只读方式打开文件:file = open("userinfo.csv", "r")
    2. 获取文件中的数据--循环结构
      1. table = csv.reader(file)
      2. for row in table:
      3. print(row[下标])
    3. 把测试数据放入字典中:userinfo["参数的名字"] = row[下标]

v4.0代码如下:

import requests
import csv
# 1、调用接口
url = "http://localhost:8080/jwshoplogin/user/login.do"
# 2、传入接口参数
# 2.1 读取csv文件中的数据
file = open("userinfo.csv", "r")
table = csv.reader(file)
# 把测试数据放入字典中
userinfo = {}
for row in table:
    userinfo["username"] = row[0]
    userinfo["password"] = row[1]
    # 3、获取接口响应结果
    response = requests.post(url, data=userinfo).text
    print(response)
    # 4、进行比对,得出测试结论
    msg = response.find(row[2])
    if msg > 0:
        print("测试通过")
    else:
        print("测试失败")

v5.0  把每一组测试数据对应的测试结果写入接口测试报告中

  1. 创建一个可写入的文件:file2 = open("test_result.csv", "w")   # 因为文件不能同时阅读和书写,所以只能创建一个新的文件去填写测试数据。
  2. 向文件中写入内容file2.write("李明" + "," + "123456" + "," + "登录成功" + "\n")  # 后面一定要加一个换行符,不然在写入的表格的时候不会自动换行。
  3. 最后记得关闭文件

v5.0代码如下:

import requests
import csv
file1 = open("userinfo.csv", "r")
file2 = open("test_result.csv", "w")
# 1、调用接口
url = "http://localhost:8080/jwshoplogin/user/login.do"
# 2、传入接口参数
table = csv.reader(file1)
userinfo = {}
for row in table:
    userinfo["username"] = row[0]
    userinfo["password"] = row[1]
    # 3、获取接口响应结果
    response = requests.post(url, userinfo).text
    print(response)
    r = response.find(row[2])
    if r > 0:
        print("测试通过")  # 加print便于检查代码,后期可以注释掉
        file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试通过" + "\n")
    else:
        print("测试失败")
        file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试失败" + "\n")
        
file2.close()

v6.0 使用面向对象的思想去设计脚本

面向对象设计思路:

  1. 一个接口测试对应一个类文件(接口比较少时可以采用,3个左右)
  2. 接口请求地址作为属性
  3. 接口的测试数据如果是固定的,也可以放在属性中定义
  4. 测试方法中实现:发送请求,获取响应,对响应的结果进行比对
  5. 在main方法中进行类的实例化
    1. 对象名 = 类名()
    2. 对象名.测试方法()

v6.0代码如下:

# 使用面向对象思想针对登录接口进行测试
# 接口请求地址:http://localhost:8080/jwshoplogin/user/login.do
# 接口请求参数:1.username 2.password
# 预期结果:登录成功、用户名不存在、密码错误

import requests
import csv


# 定义测试类
class LoginTest():
    def __init__(self):
        self.url = "http://localhost:8080/jwshoplogin/user/login.do"

    def logintest(self):
        file1 = open("userinfo.csv", "r")
        file2 = open("test_result.csv", "w")
        userinfo = {}
        table = csv.reader(file1)
        for row in table:
            userinfo["username"] = row[0]
            userinfo["password"] = row[1]
            s = requests.session()
            response = s.post(self.url, data=userinfo).text
            r = response.find(row[2])
            if r > 0:
                file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试通过" + "\n")
            else:
                file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试失败" + "\n")

        file2.close()


# 在main方法中进行类的实例化
if __name__ == '__main__':
    login = LoginTest()
    login.logintest()

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BetterFate!

爱你哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值