0
点赞
收藏
分享

微信扫一扫

自动化接口测试总结

像小强一样活着 2022-03-15 阅读 70

接口:

        系统内部接口(灰盒)

        系统外部接口:

                软件接口、服务器接口(http接口,黑盒测试)

                硬件接口(不涉及)

接口测试原理:

本质是基于某种协议,发送一个Request请求给服务器,然后服务器返回一个Response响应数据,对数据进行分析,判断是否与我们预期的返回一致,从而验证功能正确。

RESTful架构风格------->http协议

http协议:

        请求

                请求行:请求方法、资源地址、协议版本

                消息报头

                请求正文

        响应

               状态行:协议版本、状态码、状态码说明

                消息报头

                响应实体

开展接口测试:

        1、获取接口文档

        2、设计接口用例

        3、编写python脚本:

                get类型请求接口

                post类型请求接口

                参数关联接口 :  requests.session() 多个接口保持连接

                unittest实现接口测试:断言

                数据和代码分离:xlrd ---->读取excel表格数据(注意文件格式)

参数关联接口举例:

# 导包
import requests
import re   # 正则表达式需要导入包

# 把上一个接口响应文本结果中的usersession值,做为下一个接口的传参
#接口地址
url1 = "https://192.168.103.106:1080/webtours/nav.pl?in=home"
s = requests.session()  #为了保持和下一个接口件量相同的连接通道
res = s.get(url1)
print(res.text)
# 用正则表达式匹配取出响应文本中的usersession的值(.+?),表示值不一定只有一个字符
usersession = re.findall(r'name=userSession value=(.+?)>',res.text)  #该变量是一个列表,可匹配到多个值
print(usersession)

# 接口地址
url2 = "https://192.168.103.106:1080/webtours/login.pl"
para = {"userSession":usersession[0],"username":"jojo","password":"bean","login.x":"54","login.y":"11","login":"Login","JSForSubmit":"off"}

# 发送post请求
res = s.post(url2,data=para)
print(res.text)


# 总结
# 参数关联接口
# 1、导包
# 2、构造接口地址
# 3、构造请求参数
# 4、发送接口请求,requests.session()保证连接
# 5、使用正则匹配接口响应数据内容
# 6、构造接口请求参数
# 7、发送接口请求
# 8、打印结果

  代码和数据分离:

1、定义实现读取excel数据的类及excel.xls文件

import xlrd

class Read_Ex():
    def read_excel(self):
        # 打开excel  相对路径
        book = xlrd.open_workbook("../Data/data2.xls")  # 天气测试接口取值
        # 找到sheet页
        table = book.sheet_by_name("Sheet1")
        # 获取总行数和总列数
        rowNum = table.nrows
        colNum = table.ncols
        # print(rowNum)

        # 定义一个列表
        s = []
        # 取第一行数据作为key的值
        key = table.row_values(0)
        # print(key)

        if rowNum <= 1:
            print("文件数据为空")
        else:
            j = 1
            for i in range(rowNum-1):
                # print(i)
                d = {}
                values = table.row_values(j)
                for x in range(colNum):
                    # print(values)
                    d[key[x]]=values[x]
                j+=1
                s.append(d)
            return s

if __name__ == '__main__':
    # 创建类对象
    r = Read_Ex()
    # 通过对象调用方法
    s = r.read_excel()
    print(s)

2、在接口测试时引用类

import requests
import unittest
# 导入类
from Commonlib.ReadExcel import Read_Ex

class Test_Tq_excel(unittest.TestCase):
    def setUp(self):
        print("开始")
    def tearDown(self):
        print("结束")

    def test01(self):
        E = Read_Ex()
        data = E.read_excel()
        for i in data:
            url = "http://apis.juhe.cn/simpleWeather/query"
            para = {"city": i["city"], "key": i["key"]}
            r = requests.get(url, params=para)
            # 获取json返回数据
            # res = r.json()
            # print(res["error_code"])
            # 断言返回结果
            # self.assertEqual(res["error_code"],int(i["exp"]))

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

注意:excel文件的位置和类包引用时的位置

举报

相关推荐

0 条评论