首先感谢 Testerhome 提供一个很好的分享平台。在社区学习到不少,也经过一番折腾,发现接口测试工具或者平台的设计思路与流程颇有相似;在此也分享一个接口测试的平台,且文笔有限,望大家多多提建议或者意见。
2018.4 更新图 文章最后面有重构的页面,目前还在完善中,暂时不开放
WAPI 是基于 Django admin
框架开发的自动化接口测试管理平台,主要由 7 大模块组成:
项目地址 https://github.com/wangxinglong007/WAPI
目前暂时是以 Django admin
作为主要框架实现,后期将会使用 Django + Bootstrap + JS + RESTful
技术实现全面改造,现已经实现前 5 大模块,接下来我们将近一步开发。
使用 Python 2.7 依赖库 requirements.txt
点个赞,django 做平台感觉蛮好
支持支持,django 看起来比 flask 开发 web 页面方便多了
python manage.py migrate 建表的时候总是提示缺少主键
另外一个问题是,'djcelery.app.DjceleryConf' 这个在运行的时候提示 ImportError: No module named DjceleryConf,但是已经安装过 django-celery==3.2.1。求指点
最近有点忙 回复有点慢
在你 python
安装目录下
Python27\Lib\site-packages\djcelery\app.py
文件中修改点东西就 ok 了 :
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from celery import current_app
from django.apps import AppConfig
#: The Django-Celery app instance.
app = current_app._get_current_object()
class DjceleryConf(AppConfig):
name = 'djcelery'
verbose_name = u'任务系统'
还有就是 我没有提供 mysql
的各种表,你在部署好项目后, 要先把 PBS_Dynamic/migrations/0001_initial.py
和 SOAP_API/migrations/0001_initial.py
文件删除,在执行下 python manage.py makemigrations
重新生成,然后 python manage.py migrate
同步下数据库表
厉害
楼主,安装你说的方法执行 python manage.py makemigrations 的时候报下面这个错,能看出来是什么原因导致的吗
File "D:\TestTools\Python27\lib\site-packages\django\db\backends\mysql\base.py", line 250, in get_connection_params
kwargs['port'] = int(settings_dict['PORT'])
ValueError: invalid literal for int() with base 10: 'xxx'
楼主~按照您所说的两种方法,执行 python manage.py makemigrations 还是报错,请问知道是什么原因吗
按第一种 方法a. Add db_table an attribute to models.py.
在 models.py class TestCase 下 class Meta 加了 db_table='PBS_Dynamic_testcase'
(env2.7) D:\pycharmdjango\WAPI-master>python manage.py makemigrations
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "D:\envs\env2.7\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
utility.execute()
File "D:\envs\env2.7\lib\site-packages\django\core\management\__init__.py", line 337, in execute
django.setup()
File "D:\envs\env2.7\lib\site-packages\django\__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\envs\env2.7\lib\site-packages\django\apps\registry.py", line 116, in populate
app_config.ready()
File "D:\envs\env2.7\lib\site-packages\django\contrib\admin\apps.py", line 23, in ready
self.module.autodiscover()
File "D:\envs\env2.7\lib\site-packages\django\contrib\admin\__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "D:\envs\env2.7\lib\site-packages\django\utils\module_loading.py", line 50, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "D:\Python27\Lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "D:\pycharmdjango\WAPI-master\PBS_Dynamic\admin.py", line 66, in <module>
class HostListFilter(admin.SimpleListFilter):
File "D:\pycharmdjango\WAPI-master\PBS_Dynamic\admin.py", line 73, in HostListFilter
for i in use_host_list:
File "D:\envs\env2.7\lib\site-packages\django\db\models\query.py", line 250, in __iter__
self._fetch_all()
File "D:\envs\env2.7\lib\site-packages\django\db\models\query.py", line 1102, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "D:\envs\env2.7\lib\site-packages\django\db\models\query.py", line 122, in __iter__
for row in compiler.results_iter():
File "D:\envs\env2.7\lib\site-packages\django\db\models\sql\compiler.py", line 828, in results_iter
results = self.execute_sql(MULTI)
File "D:\envs\env2.7\lib\site-packages\django\db\models\sql\compiler.py", line 876, in execute_sql
cursor.execute(sql, params)
File "D:\envs\env2.7\lib\site-packages\django\db\backends\utils.py", line 80, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "D:\envs\env2.7\lib\site-packages\django\db\backends\utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "D:\envs\env2.7\lib\site-packages\django\db\utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "D:\envs\env2.7\lib\site-packages\django\db\backends\utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "D:\envs\env2.7\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: PBS_Dynamic_testcase
按第二种方法b. Change the table name pbs_dynamic_testcase to PBS_Dynamic_testcase.
对于这个方法,没太明白是哪种方式
我试过
1)搜索整个项目中的 pbs_dynamic_testcase 改成 PBS_Dynamic_testcase,还是报 "no such table: PBS_Dynamic_testcase"
2)将 model.py 中 class TestCase 改成 class testcase,并将项目中引用的地方也改成 testcase,还是报同样的错
3)将整个项目中的 PBS_Dynamic_testcase 改成 pbs_dynamic_testcase,也将 class TestCase 改成 class testcase,这回报"no such table: pbs_dynamic_testcase"
4)直接手动建了个表 PBS_Dynamic_testcase,这回执行 makemigrates 不报错了,生成了 initial.py,但执行 migate 依然报上面的错,生无可恋
操作系统是 win7,菜鸟不太懂,还请楼主救火~
去 项目地址 https://github.com/wangxinglong007/WAPI 下载 mysql 语句 , 并按照这个要求去操作!
git 上说明写错了多加了一个 r
楼主你好,我想问下按照步骤执行的时候结果在 python manage.py makemigrations 报错咯,能帮忙看下吗
请问 pyv8 是做什么的呢?安装不成功,只有 0.5 版本的,而且安装过程还出错了。。。有空的话麻烦帮忙看看,多谢!
Collecting pyv8==1.0 (from -r requirementscopy.txt (line 1))
Could not find a version that satisfies the requirement pyv8==1.0 (from -r requirementscopy.txt (line 1)) (from versions: 0.5)
No matching distribution found for pyv8==1.0 (from -r requirementscopy.txt (line 1))
cocodeMacBook-Pro:WAPI-master coco$ pip2 install -r requirementscopy.txt
Collecting pyv8 (from -r requirementscopy.txt (line 1))
Downloading PyV8-0.5.zip
Installing collected packages: pyv8
Running setup.py install for pyv8 ... error
Complete output from command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/var/folders/l6/q6xv121n4lgdnnrc_vl_08g00000gn/T/pip-build-ngFkP0/pyv8/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/l6/q6xv121n4lgdnnrc_vl_08g00000gn/T/pip-dku95b-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib.macosx-10.6-intel-2.7
copying PyV8.py -> build/lib.macosx-10.6-intel-2.7
running build_ext
building '_PyV8' extension
creating build/temp.macosx-10.6-intel-2.7
creating build/temp.macosx-10.6-intel-2.7/src
/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DBOOST_PYTHON_STATIC_LIB -Ilib/python/inc -Ilib/boost/inc -Ilib/v8/inc -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/Exception.cpp -o build/temp.macosx-10.6-intel-2.7/src/Exception.o
In file included from src/Exception.cpp:1:
src/Exception.h:6:10: fatal error: 'v8.h' file not found
#include <v8.h>
^~~~~~
1 error generated.
error: command '/usr/bin/clang' failed with exit status 1
----------------------------------------
Command "/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/var/folders/l6/q6xv121n4lgdnnrc_vl_08g00000gn/T/pip-build-ngFkP0/pyv8/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/l6/q6xv121n4lgdnnrc_vl_08g00000gn/T/pip-dku95b-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/l6/q6xv121n4lgdnnrc_vl_08g00000gn/T/pip-build-ngFkP0/pyv8/
可以访问了,但是初始用户名和密码是什么啊?
你没导他的用户库,应该就是自己创建:
django-admin createsuperuser
https://docs.djangoproject.com/en/2.0/ref/django-admin/#createsuperuser
谢谢!但是目前本地的 django-admin 命令并没有 createsuperuser 这个选项,你给的链接中说要先安装 django.contrib.auth。我看本地 setting.py 文件中是有相关配置的,请问是哪里还没有做对么?由于以前从未接触过 django,所以有点小白了,请多指教,谢谢啦!
但是增加 host 的时候怎么报错呢,,,还是我增加错了?
list index out of range
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/PBS_Dynamic/updatehost/add/
Django Version: 1.11
Exception Type: IndexError
Exception Value:
list index out of range
Exception Location: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py in __getitem__, line 289
Python Executable: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.13
Python Path:
['/Users/coco/Documents/charm/WAPI-master',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
'/Users/coco/Documents/charm/WAPI-master',
u'..',
'..',
u'..']
1、你选择的是 更新Host
项,这个项是配置机器的 host
, 比如 系统做了均衡负载,会分流数据, 此时你想访问具体一台的服务地址时,即可绑定你想要的 IP
并不是接口的 url
地址 如
2、你需要接口的 url
配置在 环境数据
这个项中 如
3、这个是一个 用例 的例子
好期待 django-bootstrap
请问楼主有 quickstart 文档吗
简直要崩溃了,一会要大写的表,一会要小写的表,sql 脚本都不知道执行多少次了。楼主能说明一下代码结构吗?我自己看看呢,拜托了
这个是我的数据库表名:
搞了半天,我说说 我当前已经踩的坑:
1.将 sql 脚本中,所有的 pbs_dynamic_testcase 修改成 PBS_Dynamic_testcase,然后执行脚本 --- 最先执行
2.1146, "Table 'django_apisys.PBS_Dynamic_testcase' doesn't exist",按照楼主的办法,修改 models.py 文件,增加 db_table,属性,修改成跟数据库一致的名字
3.到了这里仍然,会报错,有些数据表不存在(都是因为脚本中存在大小写不一致的表名引起的),继续修改 models.py,增加 db_table,属性,正在实践中。实在想不通,为什么会表名不一致,一开始的时候,为什么就会用到 PBS_Dynamic_testcase 这个表
4.修改脚本以后,貌似不用重启,保存就生效
现在我们这里新的项目统一用了小写了, 项目的 app
名字也用小写了,PBS_Dynamic
这是 app
名字,linux
区分大小写,而 Windows
不区分大小写, 用 python manage.py migrate
在 linux
下执行生成表的时候, 他生成的表名就是PBS_Dynamic_testcase
, 在 windows
执行生成表的时候,他生成的表名是 pbs_dynamic_testcase
仍会存在报错,不知道这个表是哪里来的,估计要老老实实撸代码了
我是遇到仙人跳了吗?我把表名改成了小写,结果访问的大写的表名,我把表名改成大写,结果访问的是小写的表名??????????
最终解决方案,修改 mysql 配置,不区分表大小写
又出现了新的问题,继续踩坑
你好,楼主,为什么我新部署的这个版本,少了这个 uri 输入框,没了这个,具体怎么使用啊
能大致说一下,怎么生成报告的吗,说一下伪代码呢
楼主,你好,我还是没看明白,是要先执行 sql 脚本,然后再运行 python manage.py makemigrations 吗?可是我执行你的 sql 脚本,好多报错,很多表都没有建成功。而直接运行 python manage.py makemigrations,也是报了 PBS_Dynamic_testcase' doesn't exist",我是 windows,不知道是哪里有问题,是不是我的 mysql 版本太低,我是 5.5.3。
我在 linux 虚拟机上安装 mysql,导入 sql 就好了,没事了,虽然不太明白为什么这样
这个的源码可以分享一下吗?
呀!看到了,谢谢
666 学习了
请问这个步骤怎么写?
有计划开源还是已经开源了?
重构后的源码呢?