项目的灵感来源于 httprunner,但是实现机制不一样,同时部分设定也有区别,本项目主要用于学习, 项目中推荐使用 httprunner。
项目使用 python3 开发,不兼容 python2
# 安装依赖
$ pip install -r requirements.txt
# 运行demo
$ python runtest.py
所有数据都可以使用 jinja2 的模板变量, 包括字典的 key 哦,语法为 {{ variable }}
[
{
// 参数化设置,可以使用的上下文变量为:globals, os.environ
"parameters": [
{
"username": "admin",
"password": "123456",
"nickname": "超级管理员"
},
{
"username": "zs",
"password": "123456",
"nickname": "张三"
}
],
// 局部变量,可以使用的上下文变量为:parameter, globals, os.environ
"variables": {
"token": "ada45sd6as5dsa"
},
// 测试集合名词,可以使用的上下文变量为:variables,parameter, globals, os.environ
"name": "测试用户账号",
// 全局请求接口配置,可以使用的上下文变量为:variables,parameter, globals, os.environ
"request": {
"base_url": "{{ BASE_URL }}",
"headers": {},
"cookies": {},
// 参考 requests.request 的 hooks 参数
"hooks": {
"response": [
"{{ response_hook_func }}"
]
}
},
"tests": [
{
// 测试用例也支持 parameters 和 variables, 参考上面的设定
// 测试用例名称, 上下文参考上面的设定
"name": "测试 {{ nickname }} 登录",
"skip": "跳过测试用例的原因",
"skipIf": {
"condition":true, // 支持模板表达式
"reason": "跳过的原因"
},
// 测试用例钩子函数, 目前只支持 setup,teardown
"hooks": {
"setup": [
"{{ setup_hook_func }}"
],
"teardown": [
"{{ teardown_hook_func }}"
]
},
// 请求接口配置,不支持 base_url, 参考 requests.request 的参数配置
"request": {
"url": "/get",
"method": "GET",
"hooks": {
"response": [
"{{ response_hook_func }}"
]
}
},
"validate": [
{
"check": "{{ res.status_code is 200 }}",
"message": "检查状态码是否为200"
}
]
}
]
}
]
- 接口定义分离
- 测试集合定义分离
- 支持 setUpClass tearDownClass 钩子
以下排名不分先后