接口自动化实现方式
工具类实现接口自动化:
搭建代码框架实现接口自动化:
使用开发语言+工具类:如Java、Python
为什么做接口自动化框架
敏捷开发,迭代产品项目时,接口一般数量比较大,方便团队实现接口测试版本控制。工具功能太死板,有些接口完全无法实现接口项目中有多种不同协议的接口。排错困难,定位问题不方便,需要结合抓包实现。没有办法生成美观的测试报告,特别是对外包公司来说。多接口串联,数据库验证,日志监控等有些公司做web自动化+接口自动化。
Python+requests模块实现接口自动化
requests第三方库主要用于发送http请求,做接口自动化
requests全局观
请求:
requests.get()发送get请求requests.post()发送post请求requests.delete()发送delete请求requests.put()发送put请求requests.request()最核心的方法
响应:
import requests
rep = requests.request()
#返回字符串数据
print(rep.text)
#返回字典格式的数据
print(rep.json())
#返回状态码
print(rep.status_code)
#返回cookies
print(rep.cookies)
#返回编码格式
print(rep.encoding)
#返回响应头
print(rep.headers)
接口实战
请求方式:get、post、delete、put请求参数类型:键值对、JSON格式、文件格式。
import time
import pytest
import requests
# class setup_class:
class TestSendRequsets:
# def setup(self):
# print('每个用例执行之前')
# def teardown(self):
# print('每个用例执行之后')
# @pytest.fixture()
def test_getImgCode(self):
# 接口url
t = time.time()
timess = str(int(round(t * 1000)))
times = str(int(t))
url = 'http://124.71.230.185:9002/jeecg-boot/sys/randomImage/' + '' + timess
# 参数
data = {
'_t': times,
}
# # get请求
rep = requests.request('get', url, params=data)
print(rep.text)
# 只执行smoke
# @pytest.mark.smoke
def test_Login(self):
# post请求
url = 'http://124.71.230.185:9002/jeecg-boot/sys/login'
# 参数
data = {
'captcha': 'Gkak!@#2019',
'checkKey': 1637811815838,
'password': '123456',
'remember_me': 1,
'username': 'admin'
}
rep = requests.request('post', url, json=data)
statues = rep.json()['success']
message = rep.json()['message']
if statues:
print(message)
else:
# raise Exception(message)
print(message)
if __name__ == '__main__':
pytest.main(['-vs']);
用例管理框架:安装pytestpipinstallpytest
默认规则:
测试文件以test结束或者已test开头测试函数以test_开头测试方法以Test开头,但不能带有init()方法;
注意:
get请求通过params传递参数post请求通过json或者data传递参数,区别是:data:数据报文dict字典类型:默认情况下请求头是application/x-www-form-urlencoded,表示以form表单的形式传递,格式a=1&b=2&c=3json:数据报文:不管是dict类型还是str类型,默认都是application/json,格式{'a':1,'b':2}jsodumps(dat,序列化,把字典格式的数据转换成str类型的数据jsoloads(dat,反序列化,把str格式转换成字典格式。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点