一、为什么搭建测试框架
搭建测试框架更具有灵活性,能够封装出通用的测试脚本,而postman这类工具生成的脚本只适用于当前一个接口;框架便于管理脚本,当接口不断增多时可存放代码仓库;框架支持按需驱动,自动化执行。
二、如何搭建测试框架
1、技术选型
根据技术功底选择一门自己感兴趣的语言,不必根据开发的技术栈来选择。首先,开发工程师和测试工程师的关注点是不相同的,开发需要设计技术方案,通过代码实现产品功能同时还要关注高并发、分布式、代码安全性、可靠性等,测试工程师关注产品交付的质量。其次,开发在技术栈的使用广度和使用频度远远超过测试,除非具有强大的知识储备,否则不要强行炫技,使用自己熟悉的技术栈完成脚本的编写即可
2、框架设计
工具化思维,如postman这款接口测试工具,只需要填写不同的url和params。设计框架时也需要将通用的、重叠的封装出来,抽象到框架与业务无关,将url和params变化的进行参数化。
3、技术实现
class Common(): def init(self,domain): self.domain=domain
def post(self,uri,datas,header):url=self.domain+urires=requests.post(url,data=datas,headers=header)return resdef get(self,uri,params,header):url=self.domain+uriif len(params)>0:res=requests.get(url,params=params,headers=header)else:res=requests.get(url,headers=header)
#
from test import Common
header = { ‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36’ } datas={ “log”:”spiderman”, “pwd”:””, “wp-submi”:”登录”, “redirect_to”:”https://wordpress-edu-3autumn.localprod.oc.forchange.cn“, “testcookie”:1
} uri=’/wp-login.php’ domain=’https://wordpress-edu-3autumn.localprod.oc.forchange.cn‘ comm=Common(domain) res=comm.post(uri,datas,header) print(res.status_code) print(res.text)
<a name="66P4w"></a>#### 2、unitest框架支持断言、顺序执行[https://www.imooc.com/article/21104](https://www.imooc.com/article/21104)
from test import Common import unittest
class logintest(unittest.TestCase): def test1(self): header= { ‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36’ } datas={ “log”:”spiderman”, “pwd”:””, “wp-submi”:”登录”, “redirect_to”:”https://wordpress-edu-3autumn.localprod.oc.forchange.cn“, “testcookie”:1
} uri=’/wp-login.php’ domain=’https://wordpress-edu-3autumn.localprod.oc.forchange.cn‘ comm=Common(domain) res=comm.post(uri,datas,header) print(res.status_code) self.assertEqual(res.status_code,200)
def test2(self):header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}datas = {"log": "spiderman","pwd": "","wp-submi": "登录","redirect_to": "https://wordpress-edu-3autumn.localprod.oc.forchange.cn","testcookie": 1}uri = '/wp-login.php'domain = 'https://wordpress-edu-3autumn.localprod.oc.forchange.cn'comm = Common(domain)res = comm.post(uri, datas, header)print(res.status_code)self.assertEqual(res.status_code, 200)
if name == ‘main‘: suite = unittest.TestSuite() suite.addTest(logintest(‘test1’)) suite.addTest(logintest(‘test2’)) unittest.TextTestRunner().run(suite)
#
import requests
class Common(): def init(self,domain): self.domain=domain
def post(self,uri,datas,header):url=self.domain+urires=requests.post(url,data=datas,headers=header)return resdef get(self,uri,params,header):url=self.domain+uriif len(params)>0:res=requests.get(url,params=params,headers=header)else:res=requests.get(url,headers=header)
```

