
    h                         d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZmZmZ ddlmZ d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zedk(  r ej4                  edg       yy)u   
Phase 2 简化测试
    N)BrandExtractorProductCodeExtractorAttributeExtractorgenerate_sku_idslug)ImageProcessorc                  
	   d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}d
} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}y	)u   测试 slug 函数Nike Air Maxnike_air_max==)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   )py0py2py4py7zassert %(py9)spy9NzADIDAS-SHOESadidas_shoeszProduct 123!@#product_123z  Space  Test  
space_test )	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s         a   /Users/jinjunqian/PycharmProjects/订单处理新版/ordersys/backend/tests/test_phase2_simple.pytest_slug_functionr&   
   s   141>1>1111>11111141114111111111>1111111141>1>1111>11111141114111111111>1111111 24 !2]2!]2222!]22222242224222 222!222]2222222!24!"2l2"l2222"l22222242224222!222"222l222222248r8r>8r448r    c                  	   dddd} t        |       }|j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}x}x}}|j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}x}x}}|j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}x}x}}|j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}x}x}}|j                  d      }	d}
|	|
k(  }|st        j                  d|fd|	|
f      dt	        j
                         v st        j                  |	      rt        j                  |	      ndt        j                  |
      dz  }dd|iz  }t        t        j                  |            dx}}
y)u   测试品牌提取器NIKEADIDASPUMA)nikeadidaspuma   Nike 运动鞋r   )zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.extract_brand
}(%(py4)s)
} == %(py9)s	extractorr   r   r   py6r   assert %(py11)spy11Nu   Adidas外套u   Puma 背包u   运动鞋（Nike）经典款u   UnknownBrand 商品UnknownBrand)z%(py0)s == %(py3)sbrand)r   py3assert %(py5)spy5)
r   extract_brandr   r   r   r   r   r   r   r   )aliasesr0   r   r    r"   @py_assert8@py_assert7r$   @py_format12r6   @py_assert2@py_format4@py_format6s                r%   test_brand_extractorrB      s    G w'I "">#3>"#34>>4>>>>4>>>>>>9>>>9>>>">>>#3>>>4>>>>>>>>>>"">>>">2>h>2h>>>>2h>>>>>>9>>>9>>>">>>>>>>2>>>h>>>>>>> "";=;"=1;V;1V;;;;1V;;;;;;9;;;9;;;";;;=;;;1;;;V;;;;;;; ""L#AL"#ABLfLBfLLLLBfLLLLLL9LLL9LLL"LLL#ALLLBLLLfLLLLLLL ##$9:E""5N""""5N""""""5"""5"""N"""""""r'   c            	      :   t               } | j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d
} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d}d} |||      }d}||k(  }	|	st        j                  d|	fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }
t        t        j                  |
            d	x}x}x}x}x}	}| j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}y	)u   测试货号提取器zNike AJ1234 LowAJ1234r   )zZ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.extract_product_code
}(%(py4)s)
} == %(py9)sr0   r1   r3   r4   NzAdidas BOOST350 V2BOOST350Nike)zd%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.extract_product_code
}(%(py4)s, %(py6)s)
} == %(py11)s)r   r   r   r2   py8r4   zassert %(py13)spy13u   商品 123ABC 款式123ABC)
r   extract_product_coder   r   r   r   r   r   r   r   )r0   r   r    r"   r<   r=   r$   r>   @py_assert10@py_assert9@py_format14s              r%   test_product_code_extractorrN   ,   s   $&I ))H*;H)*;<HH<HHHH<HHHHHH9HHH9HHH)HHH*;HHH<HHHHHHHHHH))M*>M)*>?M:M?:MMMM?:MMMMMM9MMM9MMM)MMM*>MMM?MMM:MMMMMMM ))P*;PVP)*;VDPPDPPPPDPPPPPP9PPP9PPP)PPP*;PPPVPPPDPPPPPPPPPPP ))M*@M)*@AMXMAXMMMMAXMMMMMM9MMM9MMM)MMM*@MMMAMMMXMMMMMMMMr'   c                  |   dddd} dddd}t        | |      }|j                  d	d
      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  dd      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}y)u   测试属性提取器u   黑色u   白色u   蓝色)u   黑u   白blueLXL42)rQ   rR   rS   r/   u   颜色:黑色;尺码:42colorr   )z%(py1)s == %(py4)s)py1r   zassert %(py6)sr2   Nsizeu   商品名称 黑 L码r   )r   extract_attributesr   r   r   r   r   )	color_aliasessize_aliasesr0   attrs@py_assert0r    r?   @py_format5@py_format7s	            r%   test_attribute_extractorr^   ;   s   $XxHMD5L"=,?I ((!E >%X%>X%%%%>X%%%>%%%X%%%%%%%= D =D    =D   =   D        ((
E >%X%>X%%%%>X%%%>%%%X%%%%%%%=C=C=C=Cr'   c                     t        ddddd      } d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}t        ddddd      } d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}d}|| v }|st        j                  d|fd|| f      t        j                  |      d	t	        j
                         v st        j                  |       rt        j                  |       nd	d
z  }dd|iz  }t        t        j                  |            dx}}y)u   测试 SKU ID 生成NK001SP001SKU001blackrS   nk001inz%(py1)s in %(py3)ssku_idrU   r7   r8   r9   NredrQ   unknownl)	r   r   r   r   r   r   r   r   r   )rh   r[   r?   r@   rA   s        r%   test_generate_sku_idrm   S   s;   Wgx$GF7f7f7ff7f7f7ff46>46466 T4uc:F9995F?5F5FF3&=3&3&&r'   c                     t               } | j                  d      }t        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}d}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }	t        t        j                  |	            d
x}}| j                  d      }t        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}| j                  d      }t        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}| j                  ddg      }
d}||
v }|st        j                  d|fd||
f      t        j                  |      dt        j                         v st        j                  |
      rt        j                  |
      nddz  }dd|iz  }	t        t        j                  |	            d
x}}| j                  |
      }t        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)u   测试图片处理器zhttp://img1.jpg,http://img2.jpg   r   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenimagesr   rU   r7   r2   assert %(py8)srG   Nzhttp://img1.jpgre   rg   ri   r8   r9   z/http://img1.jpg;http://img2.jpg|http://img3.jpg   z+http://img1.jpg,invalid_url,http://img2.jpgzhttp://img2.jpgjson_str)r   process_image_linksrq   r   r   r   r   r   r   r   r   serialize_imagesdeserialize_images)	processorrr   r?   r"   @py_assert4r]   @py_format9r[   r@   rA   rv   s              r%   test_image_processorr}   a   sV    I **+LMFv;!;!;!33vv;!&&&&&&&&&&&&&&&&&&&&&&&& **+\]Fv;!;!;!33vv;! **+XYFv;!;!;!33vv;! ))+<>O*PQH(((((((((((((((((((((((( ))(3Fv;!;!;!33vv;!r'   c                     ddd} t        |       }|j                  dd      }t        |      }d}||k(  }|st        j                  d|fd	||f      d
t        j                         v st        j                  t              rt        j                  t              nd
dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  dd      }d}|D ]  }	|	d   dk(  sd} y y)u   测试品牌别名建议功能r)   r*   )r,   r-   r
   P   )	thresholdr   r   rp   rq   suggestionsrs   rt   rG   NzNIKE Air MaxF	canonicalT)r   suggest_new_aliasrq   r   r   r   r   r   r   r   r   )
r;   r0   r   r?   r"   r{   r]   r|   found_suggestion
suggestions
             r%    test_brand_extractor_suggestionsr   {   s    G
 w'I --n-KK{ q q    q      3   3      {   {      q        --n-KK!
k"f,# "r'   c                  
   t               } | j                  }d} ||      }d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d	} ||      }d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}t        i       }|j                  }d} ||      }d}||u }|st        j                  d|fd
||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}|j                  }d} ||      }d}||u }|st        j                  d|fd
||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}y)u   测试解析边界情况r   Nis)zZ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.extract_product_code
}(%(py4)s)
} is %(py9)sr0   r1   r3   r4   u   纯文字商品名称)zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.extract_brand
}(%(py4)s)
} is %(py9)sbrand_extractor)r   rJ   r   r   r   r   r   r   r   r   r   r:   )	r0   r   r    r"   r<   r=   r$   r>   r   s	            r%   test_parsing_edge_casesr      s   $&I ))5"5)"-55-5555-55555595559555)555"555-5555555555))7$7)$/747/47777/477777797779777)777$777/77747777777 ))J*AJ)*ABJdJBdJJJJBdJJJJJJ9JJJ9JJJ)JJJ*AJJJBJJJdJJJJJJJ %R(O((44(,44,4444,444444?444?444(444444,4444444444((66(.6$6.$6666.$666666?666?666(666666.666$66666666r'   c                     t               } | j                  }d} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d	} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d
} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }g } ||      }d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }d}||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}| j                  }d} ||      }g }||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}}y)u!   测试图片处理器边界情况r   r   )zY%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.process_image_links
}(%(py4)s)
} == %(py9)srz   r1   r3   r4   N	not_a_url123456r   )zV%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.serialize_images
}(%(py4)s)
} is %(py9)s)zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.deserialize_images
}(%(py4)s)
} == %(py9)szinvalid json)r   rw   r   r   r   r   r   r   r   r   rx   ry   )rz   r   r    r"   r<   r=   r$   r>   s           r%   test_image_processor_edge_casesr      sv    I ((22(,22,2222,22222292229222(222222,2222222222((44(.4"4."4444."44444494449444(444444.444"4444444 ((;;(5;;5;;;;5;;;;;;9;;;9;;;(;;;;;;5;;;;;;;;;;((88(28b82b88882b88888898889888(8888882888b8888888 %%1b1%b)1T1)T1111)T11111191119111%111b111)111T1111111%%3d3%d+3t3+t3333+t33333393339333%333d333+333t3333333 ''11'+1r1+r1111+r11111191119111'111111+111r1111111''33'-33-3333-33333393339333'333333-3333333333''=='7=2=72====72======9===9==='======7===2========r'   __main__z-v)__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   pytestapp.utils.text_parserr   r   r   r   r   app.utils.image_processorr   r&   rB   rN   r^   rm   r}   r   r   r   __name__main__file__ r'   r%   <module>r      sl      q q 4#2N 0427">, zFKK4 ! r'   