-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnotes
150 lines (116 loc) · 4.55 KB
/
notes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
StringUtils
1.判断min max长度是否符合要求
len_check(in : str, max: int, min: int)
2.是否符合正则
reg_check(in: str, reg: str)
如果你已经有已知的数据库及表格。
运行下面代码可以自动生成models模型文件
python manage.py inspectdb [table [table ...]> your_app_name/models.py
# 查看迁移范围
python manage.py makemigrations --dry-run autotest
# 指定迁移数据库
--database=autotest
# window apache+mod_wsgi 部署
根据apache、python版本安装对应mod_wsgi
################httpd.config#################
# 加在末尾
# mod_wsgi
LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python37"
# Django wsgi config
WSGIScriptAlias / C:/MyWeb/MyWeb/wsgi.py
WSGIPythonHome c:/python37
WSGIPythonPath C:/MyWeb
<Directory C:/MyWeb/MyWeb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# Django static files
# C:\MyWeb\MyWeb\STATIC_ROOT
Alias /favicon.ico C:/MyWeb/MyWeb/STATIC_ROOT/favicon.ico
Alias /static/ C:/MyWeb/MyWeb/STATIC_ROOT/
<Directory C:/MyWeb/MyWeb/STATIC_ROOT>
Require all granted
</Directory>
###########################################
# 自动化用例执行
# register_function
id(pk auto), group, suite, function
# execution
id(pk auto), function(FK), method, range, comment, status
# node
id(pk auto), ip_port, tag
# ExecutionV
get_queryset: {
'executions': '',
'functions': '',
'nodes': ''
}
# 数据表格:
搜索: group(下拉), suite(下拉), function(下拉)
group(用例组,不可编辑), suite(用例集,不可编辑), function(test_class类, 不可编辑), method(测试方法, 不可编辑), range(数据范围,text可编辑), comment(备注,text可编辑),
node(执行节点, 下拉框), status(执行状态,不可编辑)
# 数据行引入表单元素
field属性: templet: '#selectTpl'
对应script:
<script type="text/html" id="selectTpl">
<select name="node" lay-verify="required">
{{# layui.each(d.node, function(index, item){ }}
<option value={{item.id}}>{{item.ip_port}}-{{item.tag}}</option>
{{# }); }}
</select>
</script>
# jquery设置多个css样式
$(".layui-form-select").css({'margin-top': '-10px', 'margin-left': '-15px', 'margin-right': '-15px'});
# 新建页面
function* group-suite-function
method*
ds_range
comment
保存后重载父表格
--授予全权限
-- insert into user_permission(permi_id, user_id) select id, 2 from permission_dict;
--授予全菜单
-- insert into user_menu(user_id, menu_id) select 1, id from menu;
# 2021.1.18 节点管理
列出当前'on'状态节点
执行'停止节点',则新建一个client,调用stop_server方法
执行'更新',则新建一个client,调用update方法
查询条件:tag status ip_port
操作:停止(on) 更新(on) 删除(只能删off状态的)
# layui和django模板语言标记符冲突
前后加上{% verbatim %}{% endverbatim %},django就不会解析
# 内网和公网通讯问题解决方案(未实现)
web服务在公网,节点注册时,还是插入数据库;
当测试任务排入队列时:
1.验证选择的节点是否在线,任务是否存在
2.更新任务状态为等待执行,更新节点状态为等待执行
节点轮询web服务接口,接口返回func, mthd, ds_range, node, comment, tester,
如果有本节点的任务,则更新节点状态为执行中,调用本机RPC方法,执行测试;
测试执行完成,调用web服务接口,回传json结果,回传报告压缩文件,web系统接收压缩文件,解压到目录,并插入执行结果
# API Test Codeless
api_group
group_id group author status
1 api ted 1
api_case
case_id group suite case_title author
1 1 login no token ted
api_case_step
step_id case_id step_action step_P1 step_P2 step_P3 step_order
1 1 baseurl xxx
api_test_batch
batch_id tester status create_time
1 ted pass xxx
api_test_result
result_id batch_id case_id step_id status information create_time
1 1 1 1 pass xxx xxx
## API测试上传文件实现
1.用例编辑界面上传文件按钮:点击选择文件上传,后台生成uuid重命名,保存到以用例组命名的文件夹,
并将用例组、原始文件名、uuid名、路径、后缀写入表
2.用例编辑界面下拉框选择本用例组已经上传的原始文件名,点复制按钮复制文件uuid
3.关键字post_upload:p1为uri, p2文件uuid,多文件分号;分隔, p3为字典结构的其他参数
表结构:
ApiAttachment
id, group, file_name, uuid, suffix, path