Postar
接口测试工具,基于python+requests+pytest实现。
特点
Postar makes it easier to interface testing more quickly and with less code.
————改编自django
对比postman、robot framework、jmeter等,本工具有以下特点:
只需要会一点点python就能使用
逻辑控制更灵活,for while if 想怎么用就怎么用
取值简单,随机值,数据库值,接口响应值,一行或几行代码就能取到
参数化直接,在json中用变量直接做参数化
语法简洁,不用单独记忆关键字,不用”填表式“编程,原生python更快速
调试方便,代码级调试更容易定位脚本问题
场景覆盖全,文本框遍历、parewise组合参数算法等,能覆盖更多的参数情况
安装
安装python3
安装依赖
pip install -r requirements.txt
安装pycharm
工具怎么用
很简单
在case下新建test.py
# test.py
from case.basecase import BaseCase
from common.request import Request
class TestClass(BaseCase):
def test_method(self):
req = Request()
r = req.post({
"url": "",
"headers": {},
"body": {}
})
self.check_flag(r)
就可以创建一个请求的用例。
点击左侧的run图标就可以运行这条用例了:
关于名字
postar = post + ar
post,指postman的替代工具
ar,Automated Regression,自动化回归的意思
工具说明
目录结构
Postar
----case 用例
----common 公共
----config 配置
----data 数据
----result 结果
简洁明了的风格
用例命名
from case.basecase import BaseCase
from common.request import Request
class TestClass(BaseCase):
def test_method(self):
req = Request()
r = req.post({
"url": "",
"headers": {},
"body": {}
})
self.check_flag(r)
class需要以Test开头,method需要以test开头,才能被pytest识别出来。
参数组装
url、headers、body均以json格式组装。
{
"url": "",
"headers": {},
"body": {}
}
headers若为{},则发请求时默认为 {"Content-Type": "application/json"}
用户自定义变量
这里只提供一种建议用法。实际写脚本时可以有很大的灵活性。
在实际项目中,需要对数据做参数化处理,一是复用,二是统一。
本用法借鉴了jmeter的组织方式:
目录
case 用例
----demo 项目
--------suite1 用例组1
--------suite2 用例组2
文件
与目录同名的文件,为用户自定义变量。
文件间的关系如图
这样用例只需要from demo import *就可以用到所有变量了。
# test_a.py
from case.demo.demo import *
可以把demo.py视为demo项目的全局变量。由于是面向对象设计,可以在demo.py中把对象初始化好,供用例使用。
# demo.py
from case.basecase import BaseCase
from .suite1.suite1 import *
from .suite2.suite2 import *
from common.request import *
s1 = Suite1() # s1为suite1的用户自定义变量
s2 = Suite2() # s2为suite2的用户自定义变量
req = Request()
用例import全局变量后直接用s1 s2 req等对象就可以了。