一、@pytest.mark.parametrize()
的基本用法
@pytest.mark.parametrize(args_name,args_value)
name:参数名
value:参数值(列表,元组,字典列表,字典元组)有多少个值用例就会执行多少次
# 有多少个值用例就会执行多少次
@pytest.mark.parametrize('name1',[['百里','10'],['小樱','90'] ,'鲁班'])
def test_03(self,name1):
print(name1)
# 解包
@pytest.mark.parametrize('name2,age', [['百里', '10'], ['小樱', '90']])
def test_04(self, name2,age):
print(name2,age)
二、接口自动化测试行情
目前市面上主流的接口自动化测试工具(中小型公司项目)
Postman + Newman +Git +Jenkins
目前主流的接口自动化测试框架:(大小型公司项目)
python + requests + pytest +allure + jenkins
三、requests库简介
requests是用来发送http请求以及接受http响应的第三方库,主要用于接口自动化测试
安装方法:pip install requests
常见的使用方法:
requests.get(url, params=None, **kwargs)
#url是接口地址,data用于传参,json也用于传参,data和json的区别:通过请求头conten-Type来区分,请求内容分为:请求方式,请求路径,请求头,请求正文
#content-Type:服务器要求传入的
#Postman四种传参方式
resueqts.post(url, data=None, json=None, **kwargs)
data和json传参以及content-Type的关系如下:
1、data传参:报文是dic类型,那么默认content-Type application/x -www-from -urlencoded
data传参:报文是str类型,那么默认content-type text/plain
2、json传参:报文可以是字典,也可以是str,那么默认:content-type:application.json
data:可以传纯键值对的字典或字符串
json:可以传任何形式的字典,包括嵌套的字典
requests.get()
requests.post()
requests.put()
requests.delete()
3、get请求和post请求的区别
3.1 get方法是在URL后面,用“?"连接传参,参数之间用&分隔开,会暴漏参数信息;产生一次TCP数据包,将http的hearder和data一起发送出去,服务器响应200;请求后退页面时,不产生影响;可以存入缓存;
3.2 post方法将参数放在body中;进行两次TCP连接,产生两个TCP数据包,发送header时产生一个TCP连接,响应100 continue,再发送data,相应200 OK;请求后退数据时,会重新提交请求;不可以存入缓存
4、json
json.loads() 把json字符串转化为字典格式
json.dumps()把字典格式转化为json字符串