Showing
1 changed file
with
303 additions
and
9 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_preference" enabled="true"> | 219 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_web_shop_folder" 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">1</stringProp> |
233 | </ThreadGroup> | 233 | </ThreadGroup> |
234 | <hashTree> | 234 | <hashTree> |
235 | - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_app_product_preference" enabled="true"> | 235 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_web_shop_folder" 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,23 +257,23 @@ | @@ -257,23 +257,23 @@ | ||
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">1</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">${shop_id}</stringProp> |
267 | <stringProp name="filename"></stringProp> | 267 | <stringProp name="filename"></stringProp> |
268 | <stringProp name="script">import java.security.MessageDigest; | 268 | <stringProp name="script">import java.security.MessageDigest; |
269 | import java.util.Random; | 269 | import java.util.Random; |
270 | -String[] clientTypes = {"android"}; | ||
271 | -String[] privateKeys = {"fd4ad5fcfa0de589ef238c0e7331b585"}; | 270 | +String[] clientTypes = {"web"}; |
271 | +String[] privateKeys = {"0ed29744ed318fd28d2c07985d3ba633"}; | ||
272 | int rd = new Random().nextInt(1); | 272 | int rd = new Random().nextInt(1); |
273 | String clientType = clientTypes[rd]; | 273 | String clientType = clientTypes[rd]; |
274 | String privateKey = privateKeys[rd]; | 274 | String privateKey = privateKeys[rd]; |
275 | 275 | ||
276 | -String req = "brandId="+bsh.args[0]+"&client_type="+clientType+"&limit=20&method=app.product.preference&private_key="+privateKey+"&product_skn="+bsh.args[1]+"&shopId="+bsh.args[2]+"&yh_channel=1"; | 276 | +String req = "app_version=5.8.0&client_type="+clientType+"&method=web.shop.folder&os_version=yohobuy:web&private_key="+privateKey+"&screen_size=720x1280&shop_id="+bsh.args[0]+"&status=1&v=7"; |
277 | MessageDigest md = MessageDigest.getInstance("MD5"); | 277 | MessageDigest md = MessageDigest.getInstance("MD5"); |
278 | byte[] btInput = req.getBytes(); | 278 | byte[] btInput = req.getBytes(); |
279 | md.update(btInput); | 279 | md.update(btInput); |
@@ -294,7 +294,301 @@ vars.put("searchValue",req+"&client_secret="+md5);</stri | @@ -294,7 +294,301 @@ vars.put("searchValue",req+"&client_secret="+md5);</stri | ||
294 | <hashTree/> | 294 | <hashTree/> |
295 | <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | 295 | <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> |
296 | <collectionProp name="Asserion.test_strings"> | 296 | <collectionProp name="Asserion.test_strings"> |
297 | - <stringProp name="1450572480">goods-container</stringProp> | 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_web_brand_info" 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">80</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_web_brand_info" 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">${brand_id}</stringProp> | ||
365 | + <stringProp name="filename"></stringProp> | ||
366 | + <stringProp name="script">import java.security.MessageDigest; | ||
367 | +import java.util.Random; | ||
368 | +String[] clientTypes = {"web"}; | ||
369 | +String[] privateKeys = {"0ed29744ed318fd28d2c07985d3ba633"}; | ||
370 | +int rd = new Random().nextInt(1); | ||
371 | +String clientType = clientTypes[rd]; | ||
372 | +String privateKey = privateKeys[rd]; | ||
373 | + | ||
374 | +String req = "app_version=5.8.0&client_type="+clientType+"&ids="+bsh.args[0]+"&method=web.brand.info&os_version=yohobuy:web&private_key="+privateKey+"&screen_size=720x1280&v=7"; | ||
375 | +MessageDigest md = MessageDigest.getInstance("MD5"); | ||
376 | +byte[] btInput = req.getBytes(); | ||
377 | +md.update(btInput); | ||
378 | +byte[] btResult = md.digest(); | ||
379 | +StringBuffer sb = new StringBuffer(); | ||
380 | +for(byte b : btResult){ | ||
381 | + int bt = b&0xff; | ||
382 | + if(bt<16){ | ||
383 | + sb.append(0); | ||
384 | + } | ||
385 | + sb.append(Integer.toHexString(bt)); | ||
386 | +} | ||
387 | +String md5 = sb.toString(); | ||
388 | + | ||
389 | + | ||
390 | +vars.put("searchValue",req+"&client_secret="+md5);</stringProp> | ||
391 | + </BeanShellPreProcessor> | ||
392 | + <hashTree/> | ||
393 | + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | ||
394 | + <collectionProp name="Asserion.test_strings"> | ||
395 | + <stringProp name="1450572480">"code":200</stringProp> | ||
396 | + </collectionProp> | ||
397 | + <stringProp name="TestPlan.comments"></stringProp> | ||
398 | + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> | ||
399 | + <boolProp name="Assertion.assume_success">false</boolProp> | ||
400 | + <intProp name="Assertion.test_type">16</intProp> | ||
401 | + </ResponseAssertion> | ||
402 | + <hashTree/> | ||
403 | + </hashTree> | ||
404 | + <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="固定TPM" enabled="true"> | ||
405 | + <stringProp name="TestPlan.comments"></stringProp> | ||
406 | + <doubleProp> | ||
407 | + <name>throughput</name> | ||
408 | + <value>60000</value> | ||
409 | + <savedValue>0.0</savedValue> | ||
410 | + </doubleProp> | ||
411 | + <intProp name="calcMode">2</intProp> | ||
412 | + </ConstantThroughputTimer> | ||
413 | + <hashTree/> | ||
414 | + </hashTree> | ||
415 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_web_productCollocation_list" enabled="true"> | ||
416 | + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | ||
417 | + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> | ||
418 | + <boolProp name="LoopController.continue_forever">false</boolProp> | ||
419 | + <intProp name="LoopController.loops">-1</intProp> | ||
420 | + </elementProp> | ||
421 | + <stringProp name="ThreadGroup.num_threads">80</stringProp> | ||
422 | + <stringProp name="ThreadGroup.ramp_time">10</stringProp> | ||
423 | + <longProp name="ThreadGroup.start_time">1488865571000</longProp> | ||
424 | + <longProp name="ThreadGroup.end_time">1488865571000</longProp> | ||
425 | + <boolProp name="ThreadGroup.scheduler">false</boolProp> | ||
426 | + <stringProp name="ThreadGroup.duration"></stringProp> | ||
427 | + <stringProp name="ThreadGroup.delay"></stringProp> | ||
428 | + <stringProp name="TestPlan.comments">根据产品ID查询搭配</stringProp> | ||
429 | + </ThreadGroup> | ||
430 | + <hashTree> | ||
431 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_web_productCollocation_list" enabled="true"> | ||
432 | + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | ||
433 | + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | ||
434 | + <collectionProp name="Arguments.arguments"> | ||
435 | + <elementProp name="" elementType="HTTPArgument"> | ||
436 | + <boolProp name="HTTPArgument.always_encode">false</boolProp> | ||
437 | + <stringProp name="Argument.value"></stringProp> | ||
438 | + <stringProp name="Argument.metadata">=</stringProp> | ||
439 | + </elementProp> | ||
440 | + </collectionProp> | ||
441 | + </elementProp> | ||
442 | + <stringProp name="HTTPSampler.domain"></stringProp> | ||
443 | + <stringProp name="HTTPSampler.port"></stringProp> | ||
444 | + <stringProp name="HTTPSampler.connect_timeout"></stringProp> | ||
445 | + <stringProp name="HTTPSampler.response_timeout"></stringProp> | ||
446 | + <stringProp name="HTTPSampler.protocol"></stringProp> | ||
447 | + <stringProp name="HTTPSampler.contentEncoding"></stringProp> | ||
448 | + <stringProp name="HTTPSampler.path">http://${HOST_API}/?${searchValue}</stringProp> | ||
449 | + <stringProp name="HTTPSampler.method">GET</stringProp> | ||
450 | + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> | ||
451 | + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> | ||
452 | + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> | ||
453 | + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> | ||
454 | + <boolProp name="HTTPSampler.monitor">false</boolProp> | ||
455 | + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> | ||
456 | + <stringProp name="TestPlan.comments">根据产品ID查询搭配</stringProp> | ||
457 | + </HTTPSamplerProxy> | ||
458 | + <hashTree> | ||
459 | + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="前置BeanShell" enabled="true"> | ||
460 | + <stringProp name="TestPlan.comments"></stringProp> | ||
461 | + <boolProp name="resetInterpreter">false</boolProp> | ||
462 | + <stringProp name="parameters">${product_id}</stringProp> | ||
463 | + <stringProp name="filename"></stringProp> | ||
464 | + <stringProp name="script">import java.security.MessageDigest; | ||
465 | +import java.util.Random; | ||
466 | +String[] clientTypes = {"web"}; | ||
467 | +String[] privateKeys = {"0ed29744ed318fd28d2c07985d3ba633"}; | ||
468 | +int rd = new Random().nextInt(1); | ||
469 | +String clientType = clientTypes[rd]; | ||
470 | +String privateKey = privateKeys[rd]; | ||
471 | + | ||
472 | +String req = "app_version=5.8.0&client_type="+clientType+"&method=web.productCollocation.list&os_version=yohobuy:web&private_key="+privateKey+"&product_id="+bsh.args[0]+"&screen_size=720x1280&v=7"; | ||
473 | +MessageDigest md = MessageDigest.getInstance("MD5"); | ||
474 | +byte[] btInput = req.getBytes(); | ||
475 | +md.update(btInput); | ||
476 | +byte[] btResult = md.digest(); | ||
477 | +StringBuffer sb = new StringBuffer(); | ||
478 | +for(byte b : btResult){ | ||
479 | + int bt = b&0xff; | ||
480 | + if(bt<16){ | ||
481 | + sb.append(0); | ||
482 | + } | ||
483 | + sb.append(Integer.toHexString(bt)); | ||
484 | +} | ||
485 | +String md5 = sb.toString(); | ||
486 | + | ||
487 | + | ||
488 | +vars.put("searchValue",req+"&client_secret="+md5);</stringProp> | ||
489 | + </BeanShellPreProcessor> | ||
490 | + <hashTree/> | ||
491 | + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | ||
492 | + <collectionProp name="Asserion.test_strings"> | ||
493 | + <stringProp name="1450572480">"code":200</stringProp> | ||
494 | + </collectionProp> | ||
495 | + <stringProp name="TestPlan.comments"></stringProp> | ||
496 | + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> | ||
497 | + <boolProp name="Assertion.assume_success">false</boolProp> | ||
498 | + <intProp name="Assertion.test_type">16</intProp> | ||
499 | + </ResponseAssertion> | ||
500 | + <hashTree/> | ||
501 | + </hashTree> | ||
502 | + <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="固定TPM" enabled="true"> | ||
503 | + <stringProp name="TestPlan.comments"></stringProp> | ||
504 | + <doubleProp> | ||
505 | + <name>throughput</name> | ||
506 | + <value>60000</value> | ||
507 | + <savedValue>0.0</savedValue> | ||
508 | + </doubleProp> | ||
509 | + <intProp name="calcMode">2</intProp> | ||
510 | + </ConstantThroughputTimer> | ||
511 | + <hashTree/> | ||
512 | + </hashTree> | ||
513 | + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="tg_web_shop_series" enabled="true"> | ||
514 | + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> | ||
515 | + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> | ||
516 | + <boolProp name="LoopController.continue_forever">false</boolProp> | ||
517 | + <intProp name="LoopController.loops">-1</intProp> | ||
518 | + </elementProp> | ||
519 | + <stringProp name="ThreadGroup.num_threads">80</stringProp> | ||
520 | + <stringProp name="ThreadGroup.ramp_time">10</stringProp> | ||
521 | + <longProp name="ThreadGroup.start_time">1488865571000</longProp> | ||
522 | + <longProp name="ThreadGroup.end_time">1488865571000</longProp> | ||
523 | + <boolProp name="ThreadGroup.scheduler">false</boolProp> | ||
524 | + <stringProp name="ThreadGroup.duration"></stringProp> | ||
525 | + <stringProp name="ThreadGroup.delay"></stringProp> | ||
526 | + <stringProp name="TestPlan.comments">1</stringProp> | ||
527 | + </ThreadGroup> | ||
528 | + <hashTree> | ||
529 | + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="tc_web_shop_series" enabled="true"> | ||
530 | + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> | ||
531 | + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> | ||
532 | + <collectionProp name="Arguments.arguments"> | ||
533 | + <elementProp name="" elementType="HTTPArgument"> | ||
534 | + <boolProp name="HTTPArgument.always_encode">false</boolProp> | ||
535 | + <stringProp name="Argument.value"></stringProp> | ||
536 | + <stringProp name="Argument.metadata">=</stringProp> | ||
537 | + </elementProp> | ||
538 | + </collectionProp> | ||
539 | + </elementProp> | ||
540 | + <stringProp name="HTTPSampler.domain"></stringProp> | ||
541 | + <stringProp name="HTTPSampler.port"></stringProp> | ||
542 | + <stringProp name="HTTPSampler.connect_timeout"></stringProp> | ||
543 | + <stringProp name="HTTPSampler.response_timeout"></stringProp> | ||
544 | + <stringProp name="HTTPSampler.protocol"></stringProp> | ||
545 | + <stringProp name="HTTPSampler.contentEncoding"></stringProp> | ||
546 | + <stringProp name="HTTPSampler.path">http://${HOST_API}/?${searchValue}</stringProp> | ||
547 | + <stringProp name="HTTPSampler.method">GET</stringProp> | ||
548 | + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> | ||
549 | + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> | ||
550 | + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> | ||
551 | + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> | ||
552 | + <boolProp name="HTTPSampler.monitor">false</boolProp> | ||
553 | + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> | ||
554 | + <stringProp name="TestPlan.comments">1</stringProp> | ||
555 | + </HTTPSamplerProxy> | ||
556 | + <hashTree> | ||
557 | + <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="前置BeanShell" enabled="true"> | ||
558 | + <stringProp name="TestPlan.comments"></stringProp> | ||
559 | + <boolProp name="resetInterpreter">false</boolProp> | ||
560 | + <stringProp name="parameters">${shop_id}</stringProp> | ||
561 | + <stringProp name="filename"></stringProp> | ||
562 | + <stringProp name="script">import java.security.MessageDigest; | ||
563 | +import java.util.Random; | ||
564 | +String[] clientTypes = {"web"}; | ||
565 | +String[] privateKeys = {"0ed29744ed318fd28d2c07985d3ba633"}; | ||
566 | +int rd = new Random().nextInt(1); | ||
567 | +String clientType = clientTypes[rd]; | ||
568 | +String privateKey = privateKeys[rd]; | ||
569 | + | ||
570 | +String req = "app_version=5.8.0&client_type="+clientType+"&method=web.shop.series&os_version=yohobuy:web&private_key="+privateKey+"&screen_size=720x1280&shop_id="+bsh.args[0]+"&status=1&v=7"; | ||
571 | +MessageDigest md = MessageDigest.getInstance("MD5"); | ||
572 | +byte[] btInput = req.getBytes(); | ||
573 | +md.update(btInput); | ||
574 | +byte[] btResult = md.digest(); | ||
575 | +StringBuffer sb = new StringBuffer(); | ||
576 | +for(byte b : btResult){ | ||
577 | + int bt = b&0xff; | ||
578 | + if(bt<16){ | ||
579 | + sb.append(0); | ||
580 | + } | ||
581 | + sb.append(Integer.toHexString(bt)); | ||
582 | +} | ||
583 | +String md5 = sb.toString(); | ||
584 | + | ||
585 | + | ||
586 | +vars.put("searchValue",req+"&client_secret="+md5);</stringProp> | ||
587 | + </BeanShellPreProcessor> | ||
588 | + <hashTree/> | ||
589 | + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true"> | ||
590 | + <collectionProp name="Asserion.test_strings"> | ||
591 | + <stringProp name="1450572480">"code":200</stringProp> | ||
298 | </collectionProp> | 592 | </collectionProp> |
299 | <stringProp name="TestPlan.comments"></stringProp> | 593 | <stringProp name="TestPlan.comments"></stringProp> |
300 | <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> | 594 | <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> |
-
Please register or login to post a comment