smartpush 1.4.7__py3-none-any.whl → 1.4.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- smartpush/base/__init__.py +0 -0
- smartpush/base/faker_data.py +679 -0
- smartpush/base/request_base.py +22 -0
- smartpush/base/url_enum.py +30 -0
- smartpush/export/basic/ExcelExportChecker.py +67 -3
- smartpush/form/__init__.py +0 -0
- smartpush/form/form_after.py +143 -0
- smartpush/form/form_assert.py +17 -0
- smartpush/form/form_before.py +9 -0
- smartpush/form/form_client_operation.py +19 -0
- smartpush/utils/form_utils.py +34 -0
- {smartpush-1.4.7.dist-info → smartpush-1.4.8.dist-info}/METADATA +1 -1
- smartpush-1.4.8.dist-info/RECORD +28 -0
- {smartpush-1.4.7.dist-info → smartpush-1.4.8.dist-info}/WHEEL +1 -1
- smartpush/test.py +0 -215
- smartpush-1.4.7.dist-info/RECORD +0 -19
- {smartpush-1.4.7.dist-info → smartpush-1.4.8.dist-info}/top_level.txt +0 -0
File without changes
|
@@ -0,0 +1,679 @@
|
|
1
|
+
from faker import Faker
|
2
|
+
from user_agents import parse
|
3
|
+
import random
|
4
|
+
|
5
|
+
# 中文类型faker
|
6
|
+
fake = Faker(locale='zh_CN')
|
7
|
+
fake_en = Faker(locale='en_US')
|
8
|
+
|
9
|
+
|
10
|
+
# print("可以fake的内容:",dir(fake))
|
11
|
+
|
12
|
+
# """地理信息类"""
|
13
|
+
# city_suffix = fake.city_suffix() # 生成市、县的后缀,例如:'市'
|
14
|
+
# country = fake.country() # 生成国家名称,例如:'中国'
|
15
|
+
# country_code = fake.country_code() # 生成国家编码,例如:'CN'
|
16
|
+
# district = fake.district() # 生成区的名称,例如:'朝阳区'
|
17
|
+
# geo_coordinate = fake.geo_coordinate() # 生成地理坐标,例如:'(31.692720, 88.092434)'
|
18
|
+
# latitude = fake.latitude() # 生成纬度,例如:31.692720
|
19
|
+
# longitude = fake.longitude() # 生成经度,例如:88.092434
|
20
|
+
# postcode = fake.postcode() # 生成邮编,例如:'100000'
|
21
|
+
# province = fake.province() # 生成省份名称,例如:'北京市'
|
22
|
+
# address = fake.address() # 生成详细地址,例如:'北京市朝阳区'
|
23
|
+
# street_address = fake.street_address() # 生成街道地址,例如:'人民路123号'
|
24
|
+
# street_name = fake.street_name() # 生成街道名,例如:'人民路'
|
25
|
+
# street_suffix = fake.street_suffix() # 生成街、路的后缀,例如:'路'
|
26
|
+
|
27
|
+
# """基础信息类"""
|
28
|
+
# ssn = fake.ssn() # 生成身份证号,例如:'510181199503077777'
|
29
|
+
# bs = fake.bs() # 随机公司服务名,例如:'技术支持'
|
30
|
+
# company = fake.company() # 随机公司名(长),例如:'北京百度在线网络技术有限公司'
|
31
|
+
# company_prefix = fake.company_prefix() # 随机公司名(短),例如:'百度'
|
32
|
+
# company_suffix = fake.company_suffix() # 公司性质,例如:'信息有限公司'
|
33
|
+
# credit_card_expire = fake.credit_card_expire() # 随机信用卡到期日,例如:'12/25'
|
34
|
+
# credit_card_full = fake.credit_card_full() # 生成完整信用卡信息,例如:'VISA 16 digits 04/24 CVV:022'
|
35
|
+
# credit_card_number = fake.credit_card_number() # 信用卡号,例如:'4539853637484'
|
36
|
+
# credit_card_provider = fake.credit_card_provider() # 信用卡类型,例如:'VISA 16 digit'
|
37
|
+
# credit_card_security_code = fake.credit_card_security_code() # 信用卡安全码,例如:'356'
|
38
|
+
# job = fake.job() # 随机职位,例如:'市场营销经理'
|
39
|
+
# first_name_female = fake.first_name_female() # 女性名,例如:'丽娜'
|
40
|
+
# first_name_male = fake.first_name_male() # 男性名,例如:'伟'
|
41
|
+
# last_name_female = fake.last_name_female() # 女姓,例如:'王'
|
42
|
+
# last_name_male = fake.last_name_male() # 男姓,例如:'张'
|
43
|
+
# name = fake.name() # 随机生成全名,例如:'张丽'
|
44
|
+
# name_female = fake.name_female() # 男性全名,例如:'杨丽'
|
45
|
+
# name_male = fake.name_male() # 女性全名,例如:'王伟'
|
46
|
+
# phone_number = fake.phone_number() # 随机生成手机号,例如:'13912345678'
|
47
|
+
# phonenumber_prefix = fake.phonenumber_prefix() # 随机生成手机号段,例如:'139'
|
48
|
+
|
49
|
+
# """计算机基础、Internet信息类、Email"""
|
50
|
+
# ascii_company_email = fake.ascii_company_email() # 随机ASCII公司邮箱名,例如:'example_company'
|
51
|
+
# ascii_email = fake.ascii_email() # 随机ASCII邮箱,例如:'example@example.com'
|
52
|
+
# company_email = fake.company_email() # 随机公司邮箱
|
53
|
+
# email = fake.email() # 随机邮箱
|
54
|
+
# safe_email = fake.safe_email() # 安全邮箱
|
55
|
+
|
56
|
+
|
57
|
+
# """网络基础信息类"""
|
58
|
+
# domain_name = fake.domain_name() # 生成域名,例如:'smith.com'
|
59
|
+
# domain_word = fake.domain_word() # 生成域词(即,不包含后缀),例如:'example'
|
60
|
+
# ipv4 = fake.ipv4() # 随机IP4地址,例如:'192.168.1.1'
|
61
|
+
# ipv6 = fake.ipv6() # 随机IP6地址,例如:'2001:0db8:85a3:0000:0000:8a2e:0370:7334'
|
62
|
+
# mac_address = fake.mac_address() # 随机MAC地址,例如:'5e:ff:56:8c:13:5f'
|
63
|
+
# tld = fake.tld() # 网址域名后缀(.com,.net.cn,等等,不包括.),例如:'com'
|
64
|
+
# uri = fake.uri() # 随机URI地址,例如:'http://www.example.com/path/to/page'
|
65
|
+
# uri_extension = fake.uri_extension() # 网址文件后缀,例如:'.html'
|
66
|
+
# uri_page = fake.uri_page() # 网址文件(不包含后缀),例如:'index'
|
67
|
+
# uri_path = fake.uri_path() # 网址文件路径(不包含文件名),例如:'/path/to'
|
68
|
+
# url = fake.url() # 随机URL地址,例如:'http://www.example.com'
|
69
|
+
# user_name = fake.user_name() # 随机用户名,例如:'john_doe'
|
70
|
+
# image_url = fake.image_url() # 随机URL地址,例如:'http://www.example.com/image.jpg'
|
71
|
+
|
72
|
+
# """
|
73
|
+
# 浏览器信息类
|
74
|
+
# """
|
75
|
+
# chrome = fake.chrome() # 随机生成Chrome的浏览器user_agent信息
|
76
|
+
# firefox = fake.firefox() # 随机生成FireFox的浏览器user_agent信息
|
77
|
+
# internet_explorer = fake.internet_explorer() # 随机生成IE的浏览器user_agent信息
|
78
|
+
# opera = fake.opera() # 随机生成Opera的浏览器user_agent信息
|
79
|
+
# safari = fake.safari() # 随机生成Safari的浏览器user_agent信息
|
80
|
+
# linux_platform_token = fake.linux_platform_token() # 随机Linux信息
|
81
|
+
# user_agent = fake.user_agent() # 随机user_agent信息
|
82
|
+
|
83
|
+
# """
|
84
|
+
# 数字类
|
85
|
+
# """
|
86
|
+
# numerify = fake.numerify() # 三位随机数字,例如:'123'
|
87
|
+
# random_digit = fake.random_digit() # 0~9随机数,例如:'7'
|
88
|
+
# random_digit_not_null = fake.random_digit_not_null() # 1~9的随机数,例如:'3'
|
89
|
+
# random_int = fake.random_int() # 随机数字,默认0~9999,可以通过设置min,max来设置,例如:'567'
|
90
|
+
# random_number = fake.random_number(digits=5) # 随机数字,参数digits设置生成的数字位数,例如:'12345'
|
91
|
+
# pyint = fake.pyint() # 随机Int数字,例如:'987'
|
92
|
+
# pyfloat = fake.pyfloat(left_digits=5, right_digits=2, positive=True) # 随机Float数字,例如:'12345.67'
|
93
|
+
# pydecimal = fake.pydecimal() # 随机Decimal数字,例如:Decimal('123.45')
|
94
|
+
|
95
|
+
# """
|
96
|
+
# 文本、加密类
|
97
|
+
# """
|
98
|
+
# pystr = fake.pystr() # 随机字符串,例如:'abc123'
|
99
|
+
# random_element = fake.random_element() # 随机字母,例如:'a'
|
100
|
+
# random_letter = fake.random_letter() # 随机字母,例如:'b'
|
101
|
+
# paragraph = fake.paragraph() # 随机生成
|
102
|
+
|
103
|
+
# """时间信息类"""
|
104
|
+
# date = fake.date() # 随机日期
|
105
|
+
# date_between = fake.date_between(start_date='-30y', end_date='today') # 随机生成指定范围内日期,例如:datetime.date(1998, 4, 3)
|
106
|
+
# date_object = fake.date_object() # 随机生产从1970-1-1到指定日期的随机日期,例如:datetime.date(1985, 3, 19)
|
107
|
+
# date_time = fake.date_time() # 随机生成指定时间(1970年1月1日至今),例如:datetime.datetime(2003, 5, 23, 16, 45, 40)
|
108
|
+
# date_time_ad = fake.date_time_ad() # 生成公元1年到现在的随机时间,例如:datetime.datetime(2005, 12, 2, 19, 25, 46)
|
109
|
+
# date_time_between = fake.date_time_between(start_date='-30y', end_date='now') # 随机生成指定范围内日期,用法同dates
|
110
|
+
# future_date = fake.future_date(end_date='+30d') # 未来日期,例如:datetime.date(2023, 2, 17)
|
111
|
+
# future_datetime = fake.future_datetime(end_date='+30d') # 未来时间,例如:datetime.datetime(2023, 2, 17, 20, 48, 35)
|
112
|
+
# month = fake.month() # 随机月份,例如:'04'
|
113
|
+
# month_name = fake.month_name() # 随机月份(英文),例如:'December'
|
114
|
+
# past_date = fake.past_date(start_date='-30d') # 随机生成已经过去的日期,例如:datetime.date(2023, 1, 18)
|
115
|
+
# past_datetime = fake.past_datetime(start_date='-30d') # 随机生成已经过去的时间,例如:datetime.datetime(2023, 1, 18, 20, 48, 35)
|
116
|
+
# time = fake.time() # 随机24小时时间,例如:datetime.time(13, 20, 10)
|
117
|
+
# timedelta = fake.time_delta() # 随机获取时间差,例如:datetime.timedelta(days=3, seconds=86254)
|
118
|
+
# time_object = fake.time_object() # 随机24小时时间,time对象,例如:datetime.time(21, 47)
|
119
|
+
# time_series = fake.time_series() # 随机TimeSeries对象,例如:<faker.providers.date_time.Provider object at 0x7fc4bca6d9d0>
|
120
|
+
# timezone = fake.timezone() # 随机时区,例如:'Asia/Shanghai'
|
121
|
+
# unix_time = fake.unix_time() # 随机Unix时间,例如:659312340
|
122
|
+
# year = fake.year() # 随机年份,例如:'1998'
|
123
|
+
class FakeDataGenerator:
|
124
|
+
|
125
|
+
def __init__(self, seed=None, locale='zh_CN'):
|
126
|
+
"""初始化Faker实例并设置本地化"""
|
127
|
+
Faker.seed(seed)
|
128
|
+
self.fake = Faker(locale)
|
129
|
+
# fake.seed(seed)
|
130
|
+
self.fake_en = Faker('en_US') # 用于生成英文国家名
|
131
|
+
|
132
|
+
# 生成用户代理并解析
|
133
|
+
self._user_agent = self.fake.user_agent()
|
134
|
+
self._parsed_ua = parse(self._user_agent)
|
135
|
+
|
136
|
+
@property
|
137
|
+
def user_agent(self):
|
138
|
+
return self._user_agent
|
139
|
+
|
140
|
+
@property
|
141
|
+
def fake_currency(self):
|
142
|
+
return self.fake.currency()[0]
|
143
|
+
|
144
|
+
@property
|
145
|
+
def fake_city(self):
|
146
|
+
return self.fake.city()
|
147
|
+
|
148
|
+
@property
|
149
|
+
def fake_city_suffix(self):
|
150
|
+
return self.fake.city_suffix()
|
151
|
+
|
152
|
+
@property
|
153
|
+
def fake_country(self):
|
154
|
+
return self.fake_en.country()
|
155
|
+
|
156
|
+
@property
|
157
|
+
def fake_country_code(self):
|
158
|
+
return self.fake.country_code()
|
159
|
+
|
160
|
+
@property
|
161
|
+
def fake_district(self):
|
162
|
+
return self.fake.district()
|
163
|
+
|
164
|
+
@property
|
165
|
+
def fake_latitude(self):
|
166
|
+
return self.fake.latitude()
|
167
|
+
|
168
|
+
@property
|
169
|
+
def fake_longitude(self):
|
170
|
+
return self.fake.longitude()
|
171
|
+
|
172
|
+
@property
|
173
|
+
def fake_postcode(self):
|
174
|
+
return self.fake.postcode()
|
175
|
+
|
176
|
+
@property
|
177
|
+
def fake_province(self):
|
178
|
+
return self.fake.province()
|
179
|
+
|
180
|
+
@property
|
181
|
+
def fake_address(self):
|
182
|
+
return self.fake.address()
|
183
|
+
|
184
|
+
@property
|
185
|
+
def fake_street_address(self):
|
186
|
+
return self.fake.street_address()
|
187
|
+
|
188
|
+
@property
|
189
|
+
def fake_street_name(self):
|
190
|
+
return self.fake.street_name()
|
191
|
+
|
192
|
+
@property
|
193
|
+
def fake_street_suffix(self):
|
194
|
+
return self.fake.street_suffix()
|
195
|
+
|
196
|
+
@property
|
197
|
+
def fake_ssn(self):
|
198
|
+
return self.fake.ssn()
|
199
|
+
|
200
|
+
@property
|
201
|
+
def fake_bs(self):
|
202
|
+
return self.fake.bs()
|
203
|
+
|
204
|
+
@property
|
205
|
+
def fake_company(self):
|
206
|
+
return self.fake.company()
|
207
|
+
|
208
|
+
@property
|
209
|
+
def fake_company_prefix(self):
|
210
|
+
return self.fake.company_prefix()
|
211
|
+
|
212
|
+
@property
|
213
|
+
def fake_company_suffix(self):
|
214
|
+
return self.fake.company_suffix()
|
215
|
+
|
216
|
+
@property
|
217
|
+
def fake_credit_card_expire(self):
|
218
|
+
return self.fake.credit_card_expire()
|
219
|
+
|
220
|
+
@property
|
221
|
+
def fake_credit_card_full(self):
|
222
|
+
return str(self.fake.credit_card_full())
|
223
|
+
|
224
|
+
@property
|
225
|
+
def fake_credit_card_number(self):
|
226
|
+
return self.fake.credit_card_number()
|
227
|
+
|
228
|
+
@property
|
229
|
+
def fake_credit_card_provider(self):
|
230
|
+
return self.fake.credit_card_provider()
|
231
|
+
|
232
|
+
@property
|
233
|
+
def fake_credit_card_security_code(self):
|
234
|
+
return self.fake.credit_card_security_code()
|
235
|
+
|
236
|
+
@property
|
237
|
+
def fake_job(self):
|
238
|
+
return self.fake.job()
|
239
|
+
|
240
|
+
@property
|
241
|
+
def fake_gender(self):
|
242
|
+
return random.choice(["u", "f", "m"])
|
243
|
+
|
244
|
+
@property
|
245
|
+
def fake_first_name_female(self):
|
246
|
+
return "AutoTest-" + self.fake.first_name_female()
|
247
|
+
|
248
|
+
@property
|
249
|
+
def fake_first_name_male(self):
|
250
|
+
return "AutoTest-" + self.fake.first_name_male()
|
251
|
+
|
252
|
+
@property
|
253
|
+
def fake_last_name_female(self):
|
254
|
+
return "AutoTest-" + self.fake.last_name_female()
|
255
|
+
|
256
|
+
@property
|
257
|
+
def fake_last_name_male(self):
|
258
|
+
return "AutoTest-" + self.fake.last_name_male()
|
259
|
+
|
260
|
+
@property
|
261
|
+
def fake_name(self):
|
262
|
+
return "AutoTest-" + self.fake.name()
|
263
|
+
|
264
|
+
@property
|
265
|
+
def fake_name_female(self):
|
266
|
+
return "AutoTest-" + self.fake.name_female()
|
267
|
+
|
268
|
+
@property
|
269
|
+
def fake_name_male(self):
|
270
|
+
return "AutoTest-" + self.fake.name_male()
|
271
|
+
|
272
|
+
@property
|
273
|
+
def fake_phone_number(self):
|
274
|
+
return self.fake.phone_number()
|
275
|
+
|
276
|
+
@property
|
277
|
+
def fake_phonenumber_prefix(self):
|
278
|
+
return self.fake.phonenumber_prefix()
|
279
|
+
|
280
|
+
@property
|
281
|
+
def fake_ascii_company_email(self):
|
282
|
+
return self.fake.ascii_company_email()
|
283
|
+
|
284
|
+
@property
|
285
|
+
def fake_ascii_email(self):
|
286
|
+
return self.fake.ascii_email()
|
287
|
+
|
288
|
+
@property
|
289
|
+
def fake_company_email(self):
|
290
|
+
return self.fake.company_email()
|
291
|
+
|
292
|
+
@property
|
293
|
+
def fake_email(self):
|
294
|
+
return "AutoTest-" + self.fake.email()
|
295
|
+
|
296
|
+
@property
|
297
|
+
def fake_safe_email(self):
|
298
|
+
return self.fake.safe_email()
|
299
|
+
|
300
|
+
@property
|
301
|
+
def fake_domain_name(self):
|
302
|
+
return self.fake.domain_name()
|
303
|
+
|
304
|
+
@property
|
305
|
+
def fake_domain_word(self):
|
306
|
+
return self.fake.domain_word()
|
307
|
+
|
308
|
+
@property
|
309
|
+
def fake_ipv4(self):
|
310
|
+
return self.fake.ipv4()
|
311
|
+
|
312
|
+
@property
|
313
|
+
def fake_ipv6(self):
|
314
|
+
return self.fake.ipv6()
|
315
|
+
|
316
|
+
@property
|
317
|
+
def fake_mac_address(self):
|
318
|
+
return self.fake.mac_address()
|
319
|
+
|
320
|
+
@property
|
321
|
+
def fake_port_number(self):
|
322
|
+
return self.fake.port_number()
|
323
|
+
|
324
|
+
@property
|
325
|
+
def fake_tld(self):
|
326
|
+
return self.fake.tld()
|
327
|
+
|
328
|
+
@property
|
329
|
+
def fake_uri(self):
|
330
|
+
return self.fake.uri()
|
331
|
+
|
332
|
+
@property
|
333
|
+
def fake_uri_extension(self):
|
334
|
+
return self.fake.uri_extension()
|
335
|
+
|
336
|
+
@property
|
337
|
+
def fake_uri_page(self):
|
338
|
+
return self.fake.uri_page()
|
339
|
+
|
340
|
+
@property
|
341
|
+
def fake_uri_path(self):
|
342
|
+
return self.fake.uri_path()
|
343
|
+
|
344
|
+
@property
|
345
|
+
def fake_url(self):
|
346
|
+
return self.fake.url()
|
347
|
+
|
348
|
+
@property
|
349
|
+
def fake_user_name(self):
|
350
|
+
return "AutoTest-" + self.fake.user_name()
|
351
|
+
|
352
|
+
@property
|
353
|
+
def fake_image_url(self):
|
354
|
+
return self.fake.image_url()
|
355
|
+
|
356
|
+
@property
|
357
|
+
def fake_linux_platform_token(self):
|
358
|
+
return self.fake.linux_platform_token()
|
359
|
+
|
360
|
+
@property
|
361
|
+
def fake_browser(self):
|
362
|
+
return self._parsed_ua.browser.family
|
363
|
+
|
364
|
+
@property
|
365
|
+
def fake_browser_version(self):
|
366
|
+
return '.'.join(map(str, self._parsed_ua.browser.version[:2]))
|
367
|
+
|
368
|
+
@property
|
369
|
+
def fake_os(self):
|
370
|
+
return self._parsed_ua.os.family
|
371
|
+
|
372
|
+
@property
|
373
|
+
def fake_os_version(self):
|
374
|
+
return '.'.join(map(str, self._parsed_ua.os.version[:2]))
|
375
|
+
|
376
|
+
@property
|
377
|
+
def fake_device_type(self):
|
378
|
+
return random.choice(["desktop", "mobile"])
|
379
|
+
|
380
|
+
@property
|
381
|
+
def fake_network(self):
|
382
|
+
return random.choice(["4g", "3g", "2g"])
|
383
|
+
|
384
|
+
@property
|
385
|
+
def fake_numerify(self):
|
386
|
+
return self.fake.numerify()
|
387
|
+
|
388
|
+
@property
|
389
|
+
def fake_random_digit(self):
|
390
|
+
return self.fake.random_digit()
|
391
|
+
|
392
|
+
@property
|
393
|
+
def fake_random_digit_not_null(self):
|
394
|
+
return self.fake.random_digit_not_null()
|
395
|
+
|
396
|
+
@property
|
397
|
+
def fake_random_int(self):
|
398
|
+
return self.fake.random_int()
|
399
|
+
|
400
|
+
@property
|
401
|
+
def fake_random_number(self):
|
402
|
+
return self.fake.random_number(digits=5)
|
403
|
+
|
404
|
+
@property
|
405
|
+
def fake_random_long_number(self):
|
406
|
+
return self.fake.random_number(digits=26)
|
407
|
+
|
408
|
+
@property
|
409
|
+
def fake_random_ten_number(self):
|
410
|
+
return self.fake.random_number(digits=10)
|
411
|
+
|
412
|
+
@property
|
413
|
+
def fake_pyint(self):
|
414
|
+
return self.fake.pyint()
|
415
|
+
|
416
|
+
@property
|
417
|
+
def fake_pyfloat(self):
|
418
|
+
return self.fake.pyfloat(left_digits=5, right_digits=4, positive=True)
|
419
|
+
|
420
|
+
@property
|
421
|
+
def fake_pydecimal(self):
|
422
|
+
return self.fake.pydecimal()
|
423
|
+
|
424
|
+
@property
|
425
|
+
def fake_pystr(self):
|
426
|
+
return self.fake.pystr()
|
427
|
+
|
428
|
+
@property
|
429
|
+
def fake_version(self):
|
430
|
+
return f"AutoTest-1.1.{self.fake.pyfloat(left_digits=8, right_digits=4, positive=True)}{self.fake.pyfloat(left_digits=6, right_digits=8, positive=True)}"
|
431
|
+
|
432
|
+
@property
|
433
|
+
def fake_random_element(self):
|
434
|
+
return self.fake.random_element()
|
435
|
+
|
436
|
+
@property
|
437
|
+
def fake_random_letter(self):
|
438
|
+
return self.fake.random_letter()
|
439
|
+
|
440
|
+
@property
|
441
|
+
def fake_paragraph(self):
|
442
|
+
return self.fake.paragraph()
|
443
|
+
|
444
|
+
@property
|
445
|
+
def fake_sentence(self):
|
446
|
+
return self.fake.sentence()
|
447
|
+
|
448
|
+
@property
|
449
|
+
def fake_word(self):
|
450
|
+
return self.fake.word()
|
451
|
+
|
452
|
+
@property
|
453
|
+
def fake_boolean(self):
|
454
|
+
return self.fake.boolean()
|
455
|
+
|
456
|
+
@property
|
457
|
+
def fake_language(self):
|
458
|
+
return self.fake.language_code()
|
459
|
+
|
460
|
+
@property
|
461
|
+
def fake_locale_language(self):
|
462
|
+
return self.fake.locale()
|
463
|
+
|
464
|
+
@property
|
465
|
+
def fake_md5(self):
|
466
|
+
return self.fake.md5()
|
467
|
+
|
468
|
+
@property
|
469
|
+
def fake_password(self):
|
470
|
+
return self.fake.password()
|
471
|
+
|
472
|
+
@property
|
473
|
+
def fake_sha1(self):
|
474
|
+
return self.fake.sha1()
|
475
|
+
|
476
|
+
@property
|
477
|
+
def fake_sha256(self):
|
478
|
+
return self.fake.sha256()
|
479
|
+
|
480
|
+
@property
|
481
|
+
def fake_uuid4(self):
|
482
|
+
return self.fake.uuid4()
|
483
|
+
|
484
|
+
@property
|
485
|
+
def fake_date(self):
|
486
|
+
return self.fake.date()
|
487
|
+
|
488
|
+
@property
|
489
|
+
def fake_date_between(self):
|
490
|
+
return self.fake.date_between(start_date='-30y', end_date='today')
|
491
|
+
|
492
|
+
@property
|
493
|
+
def fake_date_object(self):
|
494
|
+
return self.fake.date_object()
|
495
|
+
|
496
|
+
@property
|
497
|
+
def fake_date_time(self):
|
498
|
+
return self.fake.date_time()
|
499
|
+
|
500
|
+
@property
|
501
|
+
def fake_date_time_ad(self):
|
502
|
+
return self.fake.date_time_ad()
|
503
|
+
|
504
|
+
@property
|
505
|
+
def fake_date_time_between(self):
|
506
|
+
return self.fake.date_time_between(start_date='-30y', end_date='now')
|
507
|
+
|
508
|
+
@property
|
509
|
+
def fake_future_date(self):
|
510
|
+
return self.fake.future_date(end_date='+30d')
|
511
|
+
|
512
|
+
@property
|
513
|
+
def fake_future_datetime(self):
|
514
|
+
return self.fake.future_datetime(end_date='+30d')
|
515
|
+
|
516
|
+
@property
|
517
|
+
def fake_month(self):
|
518
|
+
return self.fake.month()
|
519
|
+
|
520
|
+
@property
|
521
|
+
def fake_month_name(self):
|
522
|
+
return self.fake.month_name()
|
523
|
+
|
524
|
+
@property
|
525
|
+
def fake_past_date(self):
|
526
|
+
return self.fake.past_date(start_date='-30d')
|
527
|
+
|
528
|
+
@property
|
529
|
+
def fake_past_datetime(self):
|
530
|
+
return self.fake.past_datetime(start_date='-30d')
|
531
|
+
|
532
|
+
@property
|
533
|
+
def fake_time(self):
|
534
|
+
return self.fake.time()
|
535
|
+
|
536
|
+
@property
|
537
|
+
def fake_timedelta(self):
|
538
|
+
return self.fake.time_delta()
|
539
|
+
|
540
|
+
@property
|
541
|
+
def fake_time_object(self):
|
542
|
+
return self.fake.time_object()
|
543
|
+
|
544
|
+
@property
|
545
|
+
def fake_timezone(self):
|
546
|
+
return self.fake.timezone()
|
547
|
+
|
548
|
+
@property
|
549
|
+
def fake_unix_time(self):
|
550
|
+
return self.fake.unix_time()
|
551
|
+
|
552
|
+
@property
|
553
|
+
def fake_year(self):
|
554
|
+
return self.fake.year()
|
555
|
+
|
556
|
+
@property
|
557
|
+
def fake_width(self):
|
558
|
+
return random.randint(800, 4000)
|
559
|
+
|
560
|
+
@property
|
561
|
+
def fake_height(self):
|
562
|
+
return random.randint(600, 2500)
|
563
|
+
|
564
|
+
def generate_user_data(self):
|
565
|
+
"""
|
566
|
+
生成完整的用户测试数据
|
567
|
+
"""
|
568
|
+
user_agent = self.fake.user_agent()
|
569
|
+
parsed_ua = parse(user_agent)
|
570
|
+
|
571
|
+
return {
|
572
|
+
'user_agent': user_agent,
|
573
|
+
'fake_currency': self.fake.currency()[0],
|
574
|
+
'fake_city': self.fake.city(),
|
575
|
+
'fake_city_suffix': self.fake.city_suffix(),
|
576
|
+
'fake_country': self.fake_en.country(),
|
577
|
+
'fake_country_code': self.fake.country_code(),
|
578
|
+
'fake_district': self.fake.district(),
|
579
|
+
'fake_latitude': self.fake.latitude(),
|
580
|
+
'fake_longitude': self.fake.longitude(),
|
581
|
+
'fake_postcode': self.fake.postcode(),
|
582
|
+
'fake_province': self.fake.province(),
|
583
|
+
'fake_address': self.fake.address(),
|
584
|
+
'fake_street_address': self.fake.street_address(),
|
585
|
+
'fake_street_name': self.fake.street_name(),
|
586
|
+
'fake_street_suffix': self.fake.street_suffix(),
|
587
|
+
'fake_ssn': self.fake.ssn(),
|
588
|
+
'fake_bs': self.fake.bs(),
|
589
|
+
'fake_company': self.fake.company(),
|
590
|
+
'fake_company_prefix': self.fake.company_prefix(),
|
591
|
+
'fake_company_suffix': self.fake.company_suffix(),
|
592
|
+
'fake_credit_card_expire': self.fake.credit_card_expire(),
|
593
|
+
'fake_credit_card_full': str(self.fake.credit_card_full()),
|
594
|
+
'fake_credit_card_number': self.fake.credit_card_number(),
|
595
|
+
'fake_credit_card_provider': self.fake.credit_card_provider(),
|
596
|
+
'fake_credit_card_security_code': self.fake.credit_card_security_code(),
|
597
|
+
'fake_job': self.fake.job(),
|
598
|
+
'fake_gender': random.choice(["u", "f", "m"]),
|
599
|
+
'fake_first_name_female': "AutoTest-" + self.fake.first_name_female(),
|
600
|
+
'fake_first_name_male': "AutoTest-" + self.fake.first_name_male(),
|
601
|
+
'fake_last_name_female': "AutoTest-" + self.fake.last_name_female(),
|
602
|
+
'fake_last_name_male': "AutoTest-" + self.fake.last_name_male(),
|
603
|
+
'fake_name': "AutoTest-" + self.fake.name(),
|
604
|
+
'fake_name_female': "AutoTest-" + self.fake.name_female(),
|
605
|
+
'fake_name_male': "AutoTest-" + self.fake.name_male(),
|
606
|
+
'fake_phone_number': self.fake.phone_number(),
|
607
|
+
'fake_phonenumber_prefix': self.fake.phonenumber_prefix(),
|
608
|
+
'fake_ascii_company_email': self.fake.ascii_company_email(),
|
609
|
+
'fake_ascii_email': self.fake.ascii_email(),
|
610
|
+
'fake_company_email': self.fake.company_email(),
|
611
|
+
'fake_email': "AutoTest-" + self.fake.email(),
|
612
|
+
'fake_safe_email': self.fake.safe_email(),
|
613
|
+
'fake_domain_name': self.fake.domain_name(),
|
614
|
+
'fake_domain_word': self.fake.domain_word(),
|
615
|
+
'fake_ipv4': self.fake.ipv4(),
|
616
|
+
'fake_ipv6': self.fake.ipv6(),
|
617
|
+
'fake_mac_address': self.fake.mac_address(),
|
618
|
+
'fake_port_number': self.fake.port_number(),
|
619
|
+
'fake_tld': self.fake.tld(),
|
620
|
+
'fake_uri': self.fake.uri(),
|
621
|
+
'fake_uri_extension': self.fake.uri_extension(),
|
622
|
+
'fake_uri_page': self.fake.uri_page(),
|
623
|
+
'fake_uri_path': self.fake.uri_path(),
|
624
|
+
'fake_url': self.fake.url(),
|
625
|
+
'fake_user_name': "AutoTest-" + self.fake.user_name(),
|
626
|
+
'fake_image_url': self.fake.image_url(),
|
627
|
+
'fake_linux_platform_token': self.fake.linux_platform_token(),
|
628
|
+
'fake_browser': parsed_ua.browser.family,
|
629
|
+
'fake_browser_version': '.'.join(map(str, parsed_ua.browser.version[:2])),
|
630
|
+
'fake_os': parsed_ua.os.family,
|
631
|
+
'fake_os_version': '.'.join(map(str, parsed_ua.os.version[:2])),
|
632
|
+
'fake_device_type': random.choice(["desktop", "mobile"]),
|
633
|
+
'fake_network': random.choice(["4g", "3g", "2g"]),
|
634
|
+
'fake_numerify': self.fake.numerify(),
|
635
|
+
'fake_random_digit': self.fake.random_digit(),
|
636
|
+
'fake_random_digit_not_null': self.fake.random_digit_not_null(),
|
637
|
+
'fake_random_int': self.fake.random_int(),
|
638
|
+
'fake_random_number': self.fake.random_number(digits=5),
|
639
|
+
'fake_random_long_number': self.fake.random_number(digits=26),
|
640
|
+
'fake_random_ten_number': self.fake.random_number(digits=10),
|
641
|
+
'fake_pyint': self.fake.pyint(),
|
642
|
+
'fake_pyfloat': self.fake.pyfloat(left_digits=5, right_digits=4, positive=True),
|
643
|
+
'fake_pydecimal': self.fake.pydecimal(),
|
644
|
+
'fake_pystr': self.fake.pystr(),
|
645
|
+
'fake_version': f"AutoTest-1.1.{self.fake.pyfloat(left_digits=8, right_digits=4, positive=True)}{self.fake.pyfloat(left_digits=6, right_digits=8, positive=True)}",
|
646
|
+
'fake_random_element': self.fake.random_element(),
|
647
|
+
'fake_random_letter': self.fake.random_letter(),
|
648
|
+
'fake_paragraph': self.fake.paragraph(),
|
649
|
+
'fake_sentence': self.fake.sentence(),
|
650
|
+
'fake_word': self.fake.word(),
|
651
|
+
'fake_boolean': self.fake.boolean(),
|
652
|
+
'fake_language': self.fake.language_code(),
|
653
|
+
'fake_locale_language': self.fake.locale(),
|
654
|
+
'fake_md5': self.fake.md5(),
|
655
|
+
'fake_password': self.fake.password(),
|
656
|
+
'fake_sha1': self.fake.sha1(),
|
657
|
+
'fake_sha256': self.fake.sha256(),
|
658
|
+
'fake_uuid4': self.fake.uuid4(),
|
659
|
+
'fake_date': self.fake.date(),
|
660
|
+
'fake_date_between': self.fake.date_between(start_date='-30y', end_date='today'),
|
661
|
+
'fake_date_object': self.fake.date_object(),
|
662
|
+
'fake_date_time': self.fake.date_time(),
|
663
|
+
'fake_date_time_ad': self.fake.date_time_ad(),
|
664
|
+
'fake_date_time_between': self.fake.date_time_between(start_date='-30y', end_date='now'),
|
665
|
+
'fake_future_date': self.fake.future_date(end_date='+30d'),
|
666
|
+
'fake_future_datetime': self.fake.future_datetime(end_date='+30d'),
|
667
|
+
'fake_month': self.fake.month(),
|
668
|
+
'fake_month_name': self.fake.month_name(),
|
669
|
+
'fake_past_date': self.fake.past_date(start_date='-30d'),
|
670
|
+
'fake_past_datetime': self.fake.past_datetime(start_date='-30d'),
|
671
|
+
'fake_time': self.fake.time(),
|
672
|
+
'fake_timedelta': self.fake.time_delta(),
|
673
|
+
'fake_time_object': self.fake.time_object(),
|
674
|
+
'fake_timezone': self.fake.timezone(),
|
675
|
+
'fake_unix_time': self.fake.unix_time(),
|
676
|
+
'fake_year': self.fake.year(),
|
677
|
+
'fake_width': random.randint(800, 4000),
|
678
|
+
'fake_height': random.randint(600, 2500)
|
679
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import requests
|
2
|
+
|
3
|
+
|
4
|
+
class RequestBase:
|
5
|
+
def __init__(self, host, headers):
|
6
|
+
"""
|
7
|
+
|
8
|
+
:param headers: 头,cookie
|
9
|
+
:param host: 域名
|
10
|
+
"""
|
11
|
+
self.host = host
|
12
|
+
self.headers = headers
|
13
|
+
self.request = requests.Request(headers=self.headers)
|
14
|
+
self.post = requests.Request("POST", headers=self.headers)
|
15
|
+
self.get = requests.Request("GET", headers=self.headers)
|
16
|
+
|
17
|
+
|
18
|
+
class FormRequestBase(RequestBase):
|
19
|
+
def __init__(self, form_id, host, headers):
|
20
|
+
super().__init__(host, headers)
|
21
|
+
self.form_id = form_id
|
22
|
+
|