1. 接口调用方式
编号 | 接口类型 | 调用方式 | 举例 | 说明 |
---|---|---|---|---|
1 | get | requests.get(url,headers,其他) | requests.get(url_vblog_get,headers = {‘Cookie’:‘adminUserName=admin; SESSION=ZDBkYmRmOWQtO’} ) | |
2 | post | requests.post(url,data/json,headers,其他) | requests.post(url=url,data={‘username’:‘sang’,‘password’:‘123’}) | |
3 | put | requests.put(url,data/json,headers,其他) | requests.put(url,data={‘id’:‘56’,‘cateName’:‘request011001’},headers= {‘Cookie’:cookies}) | |
4 | delete | requests.delete(url,headers) | requests.delete(url,headers = {‘Cookie’:cookies}) |
2. 参数说明
编号 | 参数 | 说明 | 举例 |
---|---|---|---|
1 | url | 必填项,传入url | url = url_toutiao |
2 | data | 传入请求数据,表单类型时使用(x-www-form),传入的参数需要处理成字典类型 | data_post={‘username’:‘sang’,‘password’:‘123’} |
3 | json | 传入请求数据,json类型时使用 | - |
4 | headers | 传入cookie,需要使用cookie时使用 | vblog_headers = {‘Cookie’:‘adminUserName=admin; SESSION=ZDBkYmRmOWQtO’} |
5 | 其他 | 比如传入超时时间 | timeout=30 |
3. 各属性获取
编号 | 获取属性 | 方法 | 举例 |
---|---|---|---|
1 | url | .url | print(rel_vblog_get.url) |
2 | 服务器响应的内容 | .text | print(rel_vblog_get.text) |
3 | 编码格式 | .encoding | print(rel_vblog_get.encoding) |
4 | json格式 | .json() | print(rel_vblog_get.json()) |
5 | 响应状态码 | .status_code | print(rel_vblog_get.status_code) |
6 | cookie | .cookies | print(rel_vblog_get.cookies) |
4. 获取单个cookie
获取cookie的步骤:
编号 | 步骤 | 实现方式 | 返回内容 |
---|---|---|---|
1 | 获取接口的cookie jar | cookies = result.cookies | cookie jar |
2 | 获取cookie的字典形式 | dict_cookie = requests.utils.dict_from_cookiejar(cookies) | 从cookiejar里面返回一个字典 |
3 | 拼接得到需要传入的cookie形式 | finally_cookie = ‘JSESSIONID=’+dict_cookie[‘JSESSIONID’] | 返回需要传入的cookie形式 |
5. 批量获取cookie
(1)准备工作:准备一个用户信息文件,最好是CSV格式,里面放有批量的用户信息,比如100个用户名和密码
(2)初始化操作:以覆盖写(w)的方式,打开一个csv文件,写入一个空字符串。
(3)读取预先准备好的用户信息文件,获得批量的用户名和密码
(4)调用获取cookie的函数,得到批量的cookie
(5)将获取到的批量cookie以追加写(a)的方式写入步骤2中已被清空的文件
6. 断言
-
接口自动化核心在于断言,如果请求接口后直接有明显的返回值,比如会返回“成功”、用户名等信息时,可以直接断言返回结果
-
如果返回值中没有明确信息,则需要重新查询(get)一下,看页面中是否存在我们想要的元素。一般有3种情况:
①新增后查询,看是否存在新增的信息
②修改后查询,看是否已正确修改
③删除后查询,看是否真的被删除 -
为了避免出现栏目中最新的值不是新添加的或本来就已经存在这样的值,可以有2种方法:
①程序写完之后实现闭环操作,即新增-修改-删除
②在新增的栏目后面加精确到秒的时间,时间永远不会重复
6. 实际场景分析
编号 | 测试场景 | 思路 |
---|---|---|
1 | 新增栏目接口 | 新增栏目(post)->查询栏目(get)->断言 |
2 | 编辑栏目接口 | 编辑栏目(put)->查询栏目(get)->断言 |
6. 接口自动化测试框架
- 接口自动化没有setup、teardown,直接调用接口即可
- 接口自动化的核心在于断言
编号 | 文件夹 | 存放内容 |
---|---|---|
1 | case | 放自动化用例 |
2 | public | 放公共模块封装 |
3 | report | 放测试报告 |
4 | testrunner.py | 批量运行case里面的所有测试用例 |