生成一个12位不重复的随机数 将随机数赋值给Json 串中的 orderCode字段 将Json用ECB 指定 key为bJXQezYtR4ZSNK4p进行加密并作为值传给{ 设置每秒30个并发持续1分钟调用接口接口 输出测试测试报告 import  json
import  random
import  string
from  Crypto. Cipher import  AES
from  Crypto. Util. Padding import  pad
from  Crypto. Random import  get_random_bytes  
from  base64 import  b64encode
import  requests
from  concurrent. futures import  ThreadPoolExecutor
def  encrypt_data ( data,  key) : key =  key. encode( 'utf-8' ) key =  key[ : 16 ]   cipher =  AES. new( key,  AES. MODE_ECB) ct_bytes =  cipher. encrypt( pad( data. encode( 'utf-8' ) ,  AES. block_size) ) return  b64encode( ct_bytes) . decode( 'utf-8' ) 
def  generate_unique_random_string ( length= 12 ) : characters =  string. ascii_letters +  string. digitsresult =  '' . join( random. choice( characters)  for  i in  range ( length) ) return  result
def  prepare_request_data ( ) : data =  { "head" :  { "method" :  "batch_create_order" , "version" :  "1.0.0" , "requestTime" :  "2022-07-20 10:06:31" } , "uaccount" :  "xxxx" , "body" :  [ { "mailCode" :  "TEST201072000MAILCODE" , "orderCode" :  "TE_"  +  generate_unique_random_string( 10 ) , "length" :  20.3 , "width" :  18.1 , "height" :  6.3 , "weight" :  0.53 , "receiverCompName" :  "AMZ-tt" , "receiverName" :  "Kaila Gilam 123456" , "receiverProv" :  "Atlantico" , "receiverCity" :  "Barranquilla" , "receiverArea" :  "Fayetteville" , "receiverHouseNo" :  "15" , "receiverAddress" :  "138 Lowery Dr" , "receiverAddress2" :  "apto 2B" , "receiverMobile" :  "" , "receiverTel" :  "3013357358" , "receiverEmail" :  "yh267lps4r1207d@us.shipping.temuemail.com" , "receiverPostCode" :  "110121" , "senderCompName" :  "CAN109" , "senderName" :  "CAN101" , "senderEngProv" :  "guangdong" , "senderEngCity" :  "guangzhou" , "senderAddress" :  "baiyun helong" , "senderPostCode" :  "80000" , "senderTel" :  "123456456" , "senderMobile" :  "147258369" , "countryCode" :  "CO" , "countryName" :  "哥伦比亚" , "productCode" :  "COL-X" , "tariffType" :  "ddp" , "vatNumber" :  "5236523" , "taxNo" :  "3923982135" , "remark" :  "" , "referenceNumber" :  "BG-"  +  generate_unique_random_string( 10 ) , "declValue" :  "50" , "declCurrency" :  "RMB" , "cardType" :  "2" , "cardNo" :  "48452153625425361252" , "inner" :  [ { "gName" :  "加厚压缩袋" , "gEngName" :  "compression bag" , "innerContext" :  "" , "innerQty" :  5 , "innerWeight" :  0.22 , "innerPrice" :  3.5 , "currencyCode" :  "USD" , "madePlace" :  "CN" , "hscode" :  "3923290000" , "model" :  "无" , "gBrand" :  "无" , "originCountry" :  "" , "remark" :  "" , "sku" :  "100010" , "material" :  "塑料" , "purpose" :  "物品" , "taxNo" :  "3923" , "salesAddress" :  "https://suijimimashengcheng.bmcx.com/" , "distribution" :  "compression" , "electricityFlag" :  "" , "unitCode" :  "11" , "secUnitCode" :  "" , "innerDeclValue" :  "25" , "innerDeclCurrency" :  "RMB" } ,  { "gName" :  "浴裙" , "gEngName" :  "Bath skirt" , "innerContext" :  "" , "innerQty" :  5 , "innerWeight" :  0.472 , "innerPrice" :  5.73 , "currencyCode" :  "USD" , "madePlace" :  "CN" , "hscode" :  "9807200000" , "model" :  "无" , "gBrand" :  "无" , "originCountry" :  "" , "remark" :  "" , "sku" :  "100010" , "material" :  "塑料" , "purpose" :  "物品" , "taxNo" :  "3923" , "salesAddress" :  "https://suijimimashengcheng.bmcx.com/" , "distribution" :  "compression" , "electricityFlag" :  "" , "unitCode" :  "11" , "secUnitCode" :  "" , "innerDeclValue" :  "25" , "innerDeclCurrency" :  "RMB" } ] } ] } return  data
def  send_request ( data,  key,  url) : encrypted_data =  encrypt_data( json. dumps( data) ,  key) response =  requests. post( url,  json= { "data" :  encrypted_data} ) return  response
def  main ( ) : url =  "http://xx.xx.xx:8017/api/GDPostFeiYouTemu/NotMailTemuOrderPush" key =  "bJXQezYtR4ZSNK4p" with  ThreadPoolExecutor( max_workers= 30 )  as  executor: futures =  [ executor. submit( send_request,  prepare_request_data( ) ,  key,  url)  for  _ in  range ( 30 ) ] results =  [ future. result( )  for  future in  futures] test_report =  "\n" . join( [ f"Request  { i +  1 } : Status Code  { result. status_code} " for  i,  result in  enumerate ( results) ] ) print ( test_report) if  __name__ ==  "__main__" : main( ) D: \PYTHON- 学习\邮政接口压力测试脚本\pythonProject1\. venv\Scripts\python. exe D: \PYTHON- 学习\邮政接口压力测试脚本\pythonProject1\非邮下单接口压力测试脚本. py 
Request 1 :  Status Code 200 
Request 2 :  Status Code 200 
Request 3 :  Status Code 200 
Request 4 :  Status Code 200 
Request 5 :  Status Code 200 
Request 6 :  Status Code 200 
Request 7 :  Status Code 200 
Request 8 :  Status Code 200 
Request 9 :  Status Code 200 
Request 10 :  Status Code 200 
Request 11 :  Status Code 200 
Request 12 :  Status Code 200 
Request 13 :  Status Code 200 
Request 14 :  Status Code 200 
Request 15 :  Status Code 200 
Request 16 :  Status Code 200 
Request 17 :  Status Code 200 
Request 18 :  Status Code 200 
Request 19 :  Status Code 200 
Request 20 :  Status Code 200 
Request 21 :  Status Code 200 
Request 22 :  Status Code 200 
Request 23 :  Status Code 200 
Request 24 :  Status Code 200 
Request 25 :  Status Code 200 
Request 26 :  Status Code 200 
Request 27 :  Status Code 200 
Request 28 :  Status Code 200 
Request 29 :  Status Code 200 
Request 30 :  Status Code 200 进程已结束,退出代码为 0