Pytest_Requests_基础

本文介绍了如何使用Pytest和Requests进行接口测试,包括基本的POST请求,参数化测试,以及利用yaml实现数据驱动的测试用例管理。重点讲解了如何通过yaml文件加载测试数据,进行多值断言,提高测试效率。
摘要由CSDN通过智能技术生成

接口测试:

目前业内最主流的接口协议是HTTP,也有少量的TPC

系统中所有的数据都是基于接口的形式来进行传参的

前端----接口进行数据传输-----后端

主流的UI自动化测试框架:Selenium:Appium本质上都是基于HTTP协议来实现的自动化测试

再目前领域中,最核心的接口测试技术就是基于Pytest+Requests来实现的

针对与复杂的实际业务场景,我们需要有更为有效的处理手段:

自动化测试用例管理框架:

1.UnitTest

2.Pytest

Pytest是UnitTest的升级版

环境安装:pip install pytest

在自动化测试中,数据驱动主要分为几种类型

1.excel

2.yaml

3.config

4.test

5.xmind

...........

本次主要讲yaml

附代码:

基础版

import pytest #调用俩库

import requests

def testCase_001():

url= "http://erp2.hzb-it.com/app/common/login"

data = { "username": "admin", "password":"123" }

res = requests.post(url=url,json=data) print(res) #pytest运行模式:是通过main函数 if __name__ == '__main__': pytest.main(['-v','-s'])

进阶_1:传参

import pytest import requests #调用pytest中mark函数进行参数化,注意括号格式,传入测试用例格式 @pytest.mark.parametrize(('user','pwd'),[('admin','123'),('','123')]) #注意括号格式def testCase_001(user,pwd): url = "http://erp2.hzb-it.com/app/common/login" data = { "username": user, #改为变量 'password': pwd } res = requests.post(url=url, json=data) print(res) #pytest运行模式:是通过main函数 if __name__ == '__main__': pytest.main(["-vs"])

进阶_2:数据驱动

""" 第一步: 新建包,取名load_data并在此层级下创建yaml_load.py文件 pip install PyYaml """ def load(path): #用到load函数,传入路径 """ 需要得到文件的地址,用open方法括号中填写path, 并关联到load方法中,用只读的形式进行解读,所以用“r”,并写明格式为UTF-8 """ file = open(path,'r',encoding='UTF-8') #调用yaml中的load函数,Loader=yaml.FullLoader的意思是避免警告 data = yaml.load(file,Loader=yaml.FullLoader) return data #返回变量data

""" 第二步: 新建包,取名data,并在此层级下新建user.yaml文件,用于存放测试用例 以下为示例,有五条测试用例 """ - username: admin password: '123' - username: admin1 password: '123' - username: admin2 password: '123' - username: admin3 password: '123' - username: admin4 password: '123'

"""pytrst默认读取test开头的测试用例"""import pytest import requests from load_data import yaml_load#调用写好的作用于yaml格式内容的数据读取的文件@pytest.mark.parametrize("user1",yaml_load.load('E:\码上课程\pytest_阿里\data/user.yaml')) #调用yaml_load文件并调用load函数,把文件写入到user_1这个变量中def testCase_001(user1): url = "http://erp2.hzb-it.com/app/common/login" res = requests.post(url=url, json=user1) print(res) #pytest运行模式:是通过main函数if __name__ == '__main__': pytest.main(['-v','-s'])

当想断言校验多个值的时候:

1.将所有的需交验内容,存放在一个list,然后与预期结果一一对比

2。每一个数据assert一次

断言没有绝对,要符合业务就是正确地

感谢观看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值