day:30 接口自动化框架设计
一.自动化设计框架结构 1、背景: 因为把传入接口参数、组建测试用例、执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的耦合性降低。和实现接口的分层管理,所以需要对代码进行封装处理。 2、接口分层思想:
cms_api:组建并发送接口请求
config:放所有接口的入参信息
report:放置运行所有测试用例生成的报告
run:自动加载所有的测试用例、并且运行
多测师
testcase:继承unittest单元测试框架、组建接口测试用例
www.duoceshi.cr
utils:工具类、发送邮件和生成报告模块
二.接口自动化讲解
讲解稿: 首先在pycharm里新建一个项目,然后构建6个包,分别是api构建包、conf配置包、report报告包、run运行包、testcase用例包以及utils工具包。 其中api包用来组建并发送接口请求,conf包用来存放所有接口的入参信息,report包用来放置运行所有测试用例生成的报告,run包用来自动加载所有的测试用例、并且运行,testcase包用来继承unittest单元测试框架、组建接口测试用例,utils包用来存放发送邮件和生成报告模块。 然后,在conf包中把参数值都写好,比如url、data和header;在api包中组建接口和发送接口请求,导入request和conf,参数名引用conf里面的,创建一个全局的session对象用来保持会话的状态和管理上下文,把各个接口的请求方式编写出来,同时用rep.json()来转换,全部封装在一个类里;在testcase包中组建测试用例导入unittest模块、api里面的Cms类,定义一个类,且继承unittest中的TestCase,用匿名对象来调用实例方法,然后进行断言,需要注意的是断言内容要与结果完全一致;最后,在run包里导入unittest、time、mail3、HTMLTestRunner,定义项目的路径、用例的路径、测试报告的名称、定义自动搜索用例,执行测试用例并生成报告,其中的时间戳也需要注意一下;此时,测试用例报告就会在report包里,最后用谷歌浏览器打开就可以查看了。 肖sir: 03-26 15:17:48 #登录接口参数
三.六个包详细讲解
1、第一个包:config配置包

2、第二个包:api包:组建接口并运行
函数格式,调用函数,需要用到入参参数,
from config.cms_conf import *
import requests from config.cms_conf import * s=requests.Session() class Cms(object): def __init__(self): pass def dl(self): jk1=s.post(url=url1,data=data1,headers=h1) print(jk1.text) def yh(self): jk2 = s.post(url=url2, data=data2, headers=h2) print(jk2.text) def lm(self): jk3 = s.post(url=url3, data=data3, headers=h3) print(jk3.text) if __name__ == '__main__': dx=Cms() dx.dl() dx.yh() dx.lm()

3、第三个包testcase包
进行测试用例,需要引用api包中调用的函数
import unittest from api.cms_api import * class Cms_Testcase(unittest.TestCase): @classmethod def setUpClass(cls) -> None: pass @classmethod def tearDownClass(cls) -> None: pass def setUp(self) -> None: pass def tearDown(self) -> None: pass def test1_login(self): Cms().dl() #通过类名 调方法 def test2_yh(self): Cms().yh() def test3_lm(self): Cms().lm() if __name__ == '__main__': unittest.main()

4、第四个包:run包,运行包
编写测试用例的运行方式
1、运行全部 2、运行指定测试 3、运行路径下 4、生成测试报告
import unittest import os from time import * from utils.HTMLTestRunner3_New import HTMLTestRunner xm_path=os.path.dirname(os.getcwd()) #C:\Users\Administrator.USER-20231114RR\PycharmProjects\jkzdhua print(xm_path) bgpath=os.path.join(xm_path,'report') print(bgpath) test_path=os.path.join(xm_path,'testcase') d=unittest.TestLoader().discover(start_dir=test_path,pattern="cms_testcase*.py") print(test_path) new=strftime("%m-%y-%d %H-%M-%S") file=bgpath+"/"+str(new)+"_jk.html" f=open(file,"bw") HTMLTestRunner( stream=f,title="接口自动化测试框架",description="接口自动化执行情况", tester="dcs" ).run(d)
5、第五个包utils 工具类包
存放报告模板,邮件模板

6、第6个包report 报告包

浙公网安备 33010602011771号