-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNote
80 lines (67 loc) · 4.89 KB
/
Note
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
#生成requirements.txt文件
pip freeze > requirements.txt
#安装requirements.txt依赖
pip install -r requirements.txt
# pywin32额外依赖
Microsoft Visual C++ Redistributable for Visual Studio 2019
# Edge驱动
DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0
# autotest数据库
表:run_his
id ,class varchar(32), sub_class varchar(32),title varchar(64) not null, desc varchar(200), tester varchar(32) not null, comment varchar(200), report varchar(100),
result varchar(1), create_time time, update_time time
表:res_dict
id, result varchar(1) unique not null, desc varchar(32) not null
# 接口测试自动生成有效、无效请求体
## Model类: 请求体的模型,定义所有字段及字段规则
generate方法:生成该模型所有字段的有效类和无效类集合
## Field类:字段模型
generate方法:生成该字段的有效类和无效类集合
## 字段分类:
allow_None:是否允许空,lt:小于, le:小于等于, gt:大于, ge:大于等于 min_length:最小长度, max_length:最大长度 template:模板
reg 字符串正则 dict_value_type:字典值类型, dict_value_max:字典值上限(最大数值或字符长度),format:日期时间格式
整型:allow_None,lt,le,gt,ge
浮点:allow_None,lt,le,gt,ge,precision
字符串:allow_None min_length max_length template reg
集合:allow_None template value_type
日期时间:allow_None format ,lt,le,gt,ge
## Template类:请求体模板 去掉这个类
init增加: template_str, application_type,
generate_valid_case(valid_class)
根据模型有效类集合,及传入模板,生成请求体列表
各字段有效类最大数量即为有效用例数量
generate_invalid_case(invalid_class)
根据模型无效类集合,及传入模板,生成请求体列表
各字段无效类数量之和即为无效用例数量
KeyError: format找不到对应的参数,抛出
replace_none方法:遇到none则不传该字段,删除模板中的该字段
replace_empty方法:遇到empty,该字段传空
'{{"user": "{user}"}}'
'{{ "user": "{user}", "password" : "{password}" , "number" : {info} }}'
'{{ "user": "{user}", "password" : ["a": " {a} ", "b": " {b} " ,"c": " {c} "] , "number" : {info} }}'
none的时候考虑:只有1个参数、替换第一个参数、替换中间的参数、替换最后一个参数,替换数字
不要的部分,在正则中用()包含
只有1个参数或者列表中只有1个参数: '[\{\[]{1}([\s\"]+\S[^\{]*[\s\"]+:[\s\"]*\{user\}[\s\"]*)[\}\]]{1}'
第一个参数:'[\{\[]{1}([\s\"]+\S[^\{]*[\s\"]+:[\s\"]*\{a\}[\s\"]*,)'
最后一个参数:'(,[\s\"]+\S[^\{]*[\s\"]+:[\s\"]*\{info\}[\s\"]*)[\}\]]{1}'
中间参数:',{1}([\s\"]+\S[^\{]*[\s\"]+:[\s\"]*\{password\}[\s\"]*,{1})'
empty的时候考虑:数字值和布尔值替换成null
'user={user}'
'user={user}&password={password}&info={info}'
none的时候考虑:只有1个参数、替换第一个参数、替换中间的参数、替换最后一个参数
empty的时候,参数值自动为空
user={user}&password={password}&number={number}
first = r'\s*(\S[^\{]*\s*=\s*\{\s*user\s*\}\s*&*)'
mid = r'&+?(\s*\S[^\{]*\s*=\s*\{\s*password\s*\}\s*&+?)'
last = r'(&+?\s*\S[^\{]*\s*=\s*\{\s*number\s*\})\s*'
正好碰到这个问题了,记录一下。windows登陆以后,有一个会话的概念,你用远程桌面,或者在本地电脑前登陆,都会产生不同的会话,
你远程桌面的时候,一旦关闭远程会话,桌面相关的操作就不能进行了。会报错。解决的办法上面哪位同志已经说了。就是下面这组命令。
@%windir%\\System32\\tscon.exe 0 /dest:console
@%windir%\\System32\\tscon.exe 1 /dest:console
@%windir%\\System32\\tscon.exe 2 /dest:console
这个命令是把远程会话关闭,把相关工作放在本地工作会话中。
tscon是远程会话,因为可以多人多次登陆,所以可能有多个会话,因为你不确定远程会话的id,就把0,1,2都运行一边,如果你的会话更多,就要有3,4,5。
真正起作用的其实只有其中一个。运行完以后,如果你在电脑前坐着(被控制的电脑),并且显示器开着,你就会在本地看见运行的界面了。
然后pyautogui 的键盘鼠标就可以正确运行了,这时候和本地运行程序是完全一样的,只是没有人看着而已。但这其中有一个坑。
因为改了会话以后,软件在桌面的位置有可能发生了变化,你以前的鼠标运动的参数和桌面的位置以及大小都有可能变化。
所以,为了准确运行,你需要重新把软件定位,这需要用代码实现。相信你能问到这个问题,这些你自己会解决。折腾了我好久才解决这个问题