目的:完成接口自动化测试,其中最重要的就是用例、数据、接口的分离
现在模拟一个登录接口的测试,
原始请求:
import pytest,json,requests
def test_login():
url = "https://blog.csdn.net/"
payload = json.dumps({
"tel": "123456",
"password": "123456"
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request(method="POST", url=url,headers=headers ,data=payload)
print(response.json)
问题:
针对该接口的多个用例,就得写很多次,代码重复率太高了
方法:
将用例与接口、数据分离
接口文件:get_token.py
import json,requests
# api中每个方法表示一个接口的请求方法
class GET_Token():
def get_login(self):
url = "https://blog.csdn.net/"
payload = json.dumps({
"tel": "123456",
"password": "123456"
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json()
if __name__ == '__main__':
t = GET_Token()
t.get_login()
用例文件:test_demo.py
# testcase 是测试用例,一个method对应一个case,用例与接口分离
import pytest
from get_token import GET_Token
class Test_token():
def setup(self):
self.gettoken = GET_Token()
# 判断是否登录成功,接口返回的响应值做对比
def test_token(self):
print(self.gettoken.get_login())
assert self.gettoken.get_login()['code'] == 0
现在的接口文件还是比较混乱,可以将数据格式整理一下,采用统一格式,比如JSON
整理后的get_token.py
import json,requests
# api中每个方法表示一个接口的请求方法
class GET_Token():
def get_login(self):
# 把请求信息转换成一个规范的字典结构体
req = {
"method": "POST",
"url": "https://blog.csdn.net/",
"headers": {
'Content-Type': 'application/json'
},
"data": json.dumps({
"tel": "1234456",
"password": "1234456"
})
}
# 拆包
rs = requests.request(**req)
print(rs.text)
return rs
if __name__ == '__main__':
t = GET_Token()
t.get_login()
现在用例与接口、数据成功分离了,用例或者接口有变化直接去修改对应的文件即可,一个用例针对多条数据,直接准备多条数据替换req即可(放在数据文件中去读取,遍历)
|