关于http响应头是否包含某属性的接口自动化测试实践(requests、参数化)

需求:测试http的响应头是否包含某属性

操作:

1.导入requests库,发送请求,对响应头的属性进行断言;

2. 对请求、需要校验的响应头属性进行参数化,用for循环简化代码;

初始代码:

用单个请求进行初步编码

import requests


r=requests.get("http://xx.xx.xx.xxx:xxxxx/getStatistiscs")

print("响应码:", r.status_code)
print("响应头:", r.headers)

assert "X-Content-Type-Options" in r.headers
assert "X-XSS-Protection" in r.headers
assert "Content-Security-Policy" in r.headers
assert "X-Frame-Options" in r.headers

  

运行结果:

进行优化:参数化请求、需要校验的响应头属性,结合for循环

import requests


def test_url(gurl, hs):
    r = requests.get(gurl)

    print("请求:", gurl)
    print("响应码:", r.status_code)
    print("响应头:", r.headers)

# 用for循环检查新增的响应头是否在响应中
    for h in hs:
        assert h in r.headers
        print(h,"在响应头中")
# 用列表存储需要进行检查的接口地址、响应头
resphs = ["X-Content-Type-Options", "X-XSS-Protection", "Content-Security-Policy","X-Frame-Options"]
urls = ["http://xx.xx.xx.xxx:xxxxx/nwt/dataQuery/getStatistics", "http://xx.xx.xx.xxx:xxxxx/nwt/dataQuery/getProvinceCurrentStatistics", "http://xx.xx.xx.xxx:xxxxx/nwt/dataQuery/heartdetection"]

# 用for循环进行多个接口的检查
for a in urls:
    test_url(a, resphs)

  

运行结果:

 

posted @ 2022-01-20 20:10  hello_mercy  阅读(80)  评论(2编辑  收藏  举报