Showing
1 changed file
with
105 additions
and
7 deletions
@@ -216,7 +216,7 @@ | @@ -216,7 +216,7 @@ | ||
216 | <stringProp name="shareMode">shareMode.all</stringProp> | 216 | <stringProp name="shareMode">shareMode.all</stringProp> |
217 | </CSVDataSet> | 217 | </CSVDataSet> |
218 | <hashTree/> | 218 | <hashTree/> |
219 | - <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_app_product_shopPreference" enabled="true"> | 219 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_app_secondPage_categoryList" enabled="true"> |
220 | <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | 220 | <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> |
221 | <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> | 221 | <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> |
222 | <boolProp name="LoopController.continue_forever">false</boolProp> | 222 | <boolProp name="LoopController.continue_forever">false</boolProp> |
@@ -229,10 +229,10 @@ | @@ -229,10 +229,10 @@ | ||
229 | <boolProp name="ThreadGroup.scheduler">false</boolProp> | 229 | <boolProp name="ThreadGroup.scheduler">false</boolProp> |
230 | <stringProp name="ThreadGroup.duration"></stringProp> | 230 | <stringProp name="ThreadGroup.duration"></stringProp> |
231 | <stringProp name="ThreadGroup.delay"></stringProp> | 231 | <stringProp name="ThreadGroup.delay"></stringProp> |
232 | - <stringProp name="TestPlan.comments">跨店铺推荐商品列表</stringProp> | 232 | + <stringProp name="TestPlan.comments">品类馆</stringProp> |
233 | </ThreadGroup> | 233 | </ThreadGroup> |
234 | <hashTree> | 234 | <hashTree> |
235 | - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_app_product_shopPreference" enabled="true"> | 235 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_app_secondPage_categoryList" enabled="true"> |
236 | <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | 236 | <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> |
237 | <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | 237 | <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> |
238 | <collectionProp name="Arguments.arguments"> | 238 | <collectionProp name="Arguments.arguments"> |
@@ -257,13 +257,111 @@ | @@ -257,13 +257,111 @@ | ||
257 | <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> | 257 | <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> |
258 | <boolProp name="HTTPSampler.monitor">false</boolProp> | 258 | <boolProp name="HTTPSampler.monitor">false</boolProp> |
259 | <stringProp name="HTTPSampler.embedded_url_re"></stringProp> | 259 | <stringProp name="HTTPSampler.embedded_url_re"></stringProp> |
260 | - <stringProp name="TestPlan.comments">跨店铺推荐商品列表</stringProp> | 260 | + <stringProp name="TestPlan.comments">品类馆</stringProp> |
261 | </HTTPSamplerProxy> | 261 | </HTTPSamplerProxy> |
262 | <hashTree> | 262 | <hashTree> |
263 | <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="前置BeanShell" enabled="true"> | 263 | <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="前置BeanShell" enabled="true"> |
264 | <stringProp name="TestPlan.comments"></stringProp> | 264 | <stringProp name="TestPlan.comments"></stringProp> |
265 | <boolProp name="resetInterpreter">false</boolProp> | 265 | <boolProp name="resetInterpreter">false</boolProp> |
266 | - <stringProp name="parameters">${brand_id} ${product_skn} ${shop_id}</stringProp> | 266 | + <stringProp name="parameters">${uid_test}</stringProp> |
267 | + <stringProp name="filename"></stringProp> | ||
268 | + <stringProp name="script">import java.security.MessageDigest; | ||
269 | +import java.util.Random; | ||
270 | +String[] clientTypes = {"android","iphone"}; | ||
271 | +String[] privateKeys = {"fd4ad5fcfa0de589ef238c0e7331b585","a85bb0674e08986c6b115d5e3a4884fa"}; | ||
272 | +int rd = new Random().nextInt(2); | ||
273 | +String clientType = clientTypes[rd]; | ||
274 | +String privateKey = privateKeys[rd]; | ||
275 | +String os_version = "android7.0:EVA-AL10"; | ||
276 | +String req = "app_version=6.0.0&client_type="+clientType+"&content_code=528e6974107d358148271357f999446f&gender=2,3&limit=50&method=app.secondPage.categoryList&os_version="+os_version+"&page=1&physical_channel=2&private_key="+privateKey+"&screen_size=1080x1794&session_key=78f9d0e45df94cee075dd0db965b5c55&udid=8631970399531048500d3c70eb7133e&uid="+bsh.args[0]+"&v=7&yh_channel=2"; | ||
277 | +MessageDigest md = MessageDigest.getInstance("MD5"); | ||
278 | +byte[] btInput = req.getBytes(); | ||
279 | +md.update(btInput); | ||
280 | +byte[] btResult = md.digest(); | ||
281 | +StringBuffer sb = new StringBuffer(); | ||
282 | +for(byte b : btResult){ | ||
283 | + int bt = b&0xff; | ||
284 | + if(bt<16){ | ||
285 | + sb.append(0); | ||
286 | + } | ||
287 | + sb.append(Integer.toHexString(bt)); | ||
288 | +} | ||
289 | +String md5 = sb.toString(); | ||
290 | +os_version=URLEncoder.encode(os_version); | ||
291 | +req = "app_version=6.0.0&client_type="+clientType+"&content_code=528e6974107d358148271357f999446f&gender=2,3&limit=50&method=app.secondPage.categoryList&os_version="+os_version+"&page=1&physical_channel=2&private_key="+privateKey+"&screen_size=1080x1794&session_key=78f9d0e45df94cee075dd0db965b5c55&udid=8631970399531048500d3c70eb7133e&uid="+bsh.args[0]+"&v=7&yh_channel=2"; | ||
292 | +vars.put("searchValue",req+"&client_secret="+md5);</stringProp> | ||
293 | + </BeanShellPreProcessor> | ||
294 | + <hashTree/> | ||
295 | + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | ||
296 | + <collectionProp name="Asserion.test_strings"> | ||
297 | + <stringProp name="1450572480">"code":200</stringProp> | ||
298 | + </collectionProp> | ||
299 | + <stringProp name="TestPlan.comments"></stringProp> | ||
300 | + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> | ||
301 | + <boolProp name="Assertion.assume_success">false</boolProp> | ||
302 | + <intProp name="Assertion.test_type">16</intProp> | ||
303 | + </ResponseAssertion> | ||
304 | + <hashTree/> | ||
305 | + </hashTree> | ||
306 | + <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="固定TPM" enabled="true"> | ||
307 | + <stringProp name="TestPlan.comments"></stringProp> | ||
308 | + <doubleProp> | ||
309 | + <name>throughput</name> | ||
310 | + <value>60000</value> | ||
311 | + <savedValue>0.0</savedValue> | ||
312 | + </doubleProp> | ||
313 | + <intProp name="calcMode">2</intProp> | ||
314 | + </ConstantThroughputTimer> | ||
315 | + <hashTree/> | ||
316 | + </hashTree> | ||
317 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_app_secondPage_shopsList" enabled="true"> | ||
318 | + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | ||
319 | + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> | ||
320 | + <boolProp name="LoopController.continue_forever">false</boolProp> | ||
321 | + <intProp name="LoopController.loops">-1</intProp> | ||
322 | + </elementProp> | ||
323 | + <stringProp name="ThreadGroup.num_threads">100</stringProp> | ||
324 | + <stringProp name="ThreadGroup.ramp_time">10</stringProp> | ||
325 | + <longProp name="ThreadGroup.start_time">1488865571000</longProp> | ||
326 | + <longProp name="ThreadGroup.end_time">1488865571000</longProp> | ||
327 | + <boolProp name="ThreadGroup.scheduler">false</boolProp> | ||
328 | + <stringProp name="ThreadGroup.duration"></stringProp> | ||
329 | + <stringProp name="ThreadGroup.delay"></stringProp> | ||
330 | + <stringProp name="TestPlan.comments">品牌馆</stringProp> | ||
331 | + </ThreadGroup> | ||
332 | + <hashTree> | ||
333 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_app_secondPage_shopsList" enabled="true"> | ||
334 | + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | ||
335 | + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | ||
336 | + <collectionProp name="Arguments.arguments"> | ||
337 | + <elementProp name="" elementType="HTTPArgument"> | ||
338 | + <boolProp name="HTTPArgument.always_encode">false</boolProp> | ||
339 | + <stringProp name="Argument.value"></stringProp> | ||
340 | + <stringProp name="Argument.metadata">=</stringProp> | ||
341 | + </elementProp> | ||
342 | + </collectionProp> | ||
343 | + </elementProp> | ||
344 | + <stringProp name="HTTPSampler.domain"></stringProp> | ||
345 | + <stringProp name="HTTPSampler.port"></stringProp> | ||
346 | + <stringProp name="HTTPSampler.connect_timeout"></stringProp> | ||
347 | + <stringProp name="HTTPSampler.response_timeout"></stringProp> | ||
348 | + <stringProp name="HTTPSampler.protocol"></stringProp> | ||
349 | + <stringProp name="HTTPSampler.contentEncoding"></stringProp> | ||
350 | + <stringProp name="HTTPSampler.path">http://${HOST_API}/?${searchValue}</stringProp> | ||
351 | + <stringProp name="HTTPSampler.method">GET</stringProp> | ||
352 | + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> | ||
353 | + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> | ||
354 | + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> | ||
355 | + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> | ||
356 | + <boolProp name="HTTPSampler.monitor">false</boolProp> | ||
357 | + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> | ||
358 | + <stringProp name="TestPlan.comments">品牌馆</stringProp> | ||
359 | + </HTTPSamplerProxy> | ||
360 | + <hashTree> | ||
361 | + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="前置BeanShell" enabled="true"> | ||
362 | + <stringProp name="TestPlan.comments"></stringProp> | ||
363 | + <boolProp name="resetInterpreter">false</boolProp> | ||
364 | + <stringProp name="parameters">${uid_test}</stringProp> | ||
267 | <stringProp name="filename"></stringProp> | 365 | <stringProp name="filename"></stringProp> |
268 | <stringProp name="script">import java.security.MessageDigest; | 366 | <stringProp name="script">import java.security.MessageDigest; |
269 | import java.util.Random; | 367 | import java.util.Random; |
@@ -273,7 +371,7 @@ int rd = new Random().nextInt(2); | @@ -273,7 +371,7 @@ int rd = new Random().nextInt(2); | ||
273 | String clientType = clientTypes[rd]; | 371 | String clientType = clientTypes[rd]; |
274 | String privateKey = privateKeys[rd]; | 372 | String privateKey = privateKeys[rd]; |
275 | 373 | ||
276 | -String req = "brandId="+bsh.args[0]+"&client_type="+clientType+"&limit=30&method=app.product.shopPreference&private_key="+privateKey+"&product_skn="+bsh.args[1]+"&shopId="+bsh.args[2]+"&yh_channel=1"; | 374 | +String req = "app_version=6.0.0&client_type="+clientType+"&content_code=528e6974107d358148271357f999446f&limit=50&method=app.secondPage.shopsList&os_version=10.3.3&page=1&physical_channel=1&private_key="+privateKey+"&screen_size=375x667&session_key=a6fdb0652bc4a4b601e024e385b8421b&udid=778326c9c83ea378c09d0108e367b2a22394b0fc&uid="+bsh.args[0]+"&v=7"; |
277 | MessageDigest md = MessageDigest.getInstance("MD5"); | 375 | MessageDigest md = MessageDigest.getInstance("MD5"); |
278 | byte[] btInput = req.getBytes(); | 376 | byte[] btInput = req.getBytes(); |
279 | md.update(btInput); | 377 | md.update(btInput); |
@@ -294,7 +392,7 @@ vars.put("searchValue",req+"&client_secret="+md5);</stri | @@ -294,7 +392,7 @@ vars.put("searchValue",req+"&client_secret="+md5);</stri | ||
294 | <hashTree/> | 392 | <hashTree/> |
295 | <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | 393 | <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> |
296 | <collectionProp name="Asserion.test_strings"> | 394 | <collectionProp name="Asserion.test_strings"> |
297 | - <stringProp name="1450572480">goods-container</stringProp> | 395 | + <stringProp name="1450572480">"code":200</stringProp> |
298 | </collectionProp> | 396 | </collectionProp> |
299 | <stringProp name="TestPlan.comments"></stringProp> | 397 | <stringProp name="TestPlan.comments"></stringProp> |
300 | <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> | 398 | <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> |
-
Please register or login to post a comment