接口测试:
目前业内最主流的接口协议是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一次
断言没有绝对,要符合业务就是正确地
感谢观看