- 接口自动化的本质是自动发送请求给服务器,服务器返回结果,我们验证数据是否符合预期。
- 我们要做的事情就是
- 发送请求给服务器;
- 2.检查服务器返回的结果是否正确;
- 现在根据这两个需求我们做的事情
- 1.使用requests帮助发送请求给服务器
- 2.拿到服务器的返回结果之后使用python的assert添加断言,验证结果是否符合预期结果。
- 这两个是最核心的东西, 下面的一切操作都是围绕这连个核心。
- 封装基础类:
- 我们的API 主要用get 和post 请求,在封装时主要封装get 和 post 请求即可。
- sdk.py
- import requests
- class Client:
- def init(self):
self.base_url = '[http://39.107.96.138:3000/api/v1](http://39.107.96.138:3000/api/v1)'
- def do_request(self,url:str, method:str,args,params=None, data=None,json=None, *kwargs):
url = self.base_url+url<br /> method = method.lower()<br /> if method == 'get':<br /> return requests.get(url,params,**kwargs)<br /> elif method == 'post':<br /> return requests.post(url,data=data,json=json,**kwargs)
- 封装数据
- 接口测试数据主要放在yaml文件中。
- data.yml
- topics1:
url: /topics
method: get
param:page: 1 limit: 1
- topics1:
- topics2:
url: /topics
method: get
param:page: 1 limit: 2
- topics2:
- 定义case
- 请求的参数放在yml文件中维护,有多少条数据应该为多少条case。借助pytest的参数化,从文件读取数据传给参数化,实现数据驱动。
- testcase.py
- import
pytest
from sdk import Client
import yaml - f = open(‘data.yml’)
data = yaml.safe_load_all(f)
@pytest.mark.parametrize(‘case’,next(data))
def test_case(case):for k, v in case.items():<br /> client = Client()<br /> res = client.do_request(url=v['url'], method=v['method'], params=v['param'])<br /> print(res.status_code, res.content)
- 运行
- 执行pytest 运行命令
- pytest tescase.py
- 可以看到自动生成2条case,执行完毕。
- Python 习题整理
- 给定下列数组,请按照数据长度从小到大进行排序;
- l = [‘zyy’,’yx’,’bbbb’,’aaa’]
两种方式
l.sort(key=len)
l.sort(key= lambda a: len(a))
print(l)- 给定下列数据,求出A,B中共同的元素;
- a = [‘zhangsan’,’lisi’,’wangwu’]
b = [‘zhangsan’,’mazi’,’ergouzi’] 转换为集合之后求交集。
print( set(a) & set(b))- 执行下面代码,请问会打印出什么内容?
- def f(a,L=[]):
L.append(a)<br /> print(L)
- f(1)
f(2)
f(3) - [1]
[1, 2]
[1, 2, 3]