
    ̎h"                        d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlmZ ddlZddlZddlZddlZ ee      j(                  j(                  j(                  Zej,                  j/                  d eedz               ej,                  j/                  d eedz               ddlmZ ej6                  d        Zej6                  d        Zd	 Zd
 Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'e(dk(  r ejR                  edg       yy)u   
Phase 0 分析器测试
    N)Pathscriptsbackend)OrderAnalyzerc               #   f   K   t        j                         } |  t        j                  |        yw)u   创建临时目录N)tempfilemkdtempshutilrmtree)temps    c   /Users/jinjunqian/PycharmProjects/订单处理新版/ordersys/backend/tests/test_phase0_analyzer.pytemp_dirr      s'      D
J
MM$s   /1c                      i dg ddg ddg ddg dd	g d
dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg d d!g d"} t        j                  |       S )#u   创建示例订单数据   原始订单编号)ORD001r   ORD002ORD003r   u   网店名称)   店铺Ar   u   店铺Br   r   u   交易状态)   交易成功r   r      交易关闭r      付款时间)2025-01-15 10:30:00r   z2025-01-16 14:20:00NNu   下载时间)2025-01-20 08:00:00r   r   r   r      线上宝贝名称)u   Nike 运动鞋 AJ1 Lowu   Nike 运动T恤u   Adidas 外套 2025款u   Puma 背包u   Puma 帽子   线上销售属性)u   颜色:黑色;尺码:42u   颜色:白色;尺码:Lu   颜色:蓝色;尺码:XLu   颜色:红色u   颜色:黑色u   线上商家编码)NK001NK002AD001PM001PM002u   商品编号)SP001SP002SP003SP004SP005	   SKU编号)SKU001SKU002SKU003SKU004SKU005   图片)zhttp://img1.jpg,http://img2.jpgzhttp://img3.jpg;http://img4.jpgzhttp://img5.jpg|http://img6.jpgzhttp://img7.jpgzhttp://img8.jpg http://img9.jpg   数量)      r.   r.   r.      订单单价)     @g     h@     @     r@     X@u   订单金额)r1   g     x@r2   r3   r4   u   退款状态) r5   r5      退款成功r6   u   买家留言)   尽快发货r7   r5   r5   r5   u   卖家备注)r5   r5   u	   大客户r5   r5   )pd	DataFrame)datas    r   sample_order_datar;      s    PO 	h 	i	
 	  L 	  C 	  Q 	K 	E 	G 	 
$ 	/%& 	?'( 	?)* 	D+, 	D-. 	5/D2 <<    c                 
   t        | dd      }|j                  }t        |       }||k(  }|s7t        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      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                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}}|j                  }d}||k(  }|st        j                  d|fd||f      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}||k(  }|st        j                  d|fd||f      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                  }|j                  } |       }	|	sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      dz  }
t        t        j                  |
            dx}x}}	|j                  }|j                  } |       }	|	sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      dz  }
t        t        j                  |
            dx}x}}	|j                   }|j                  } |       }	|	sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      dz  }
t        t        j                  |
            dx}x}}	y)u   测试分析器初始化*.xlsx   )shared_inbox	file_globlimit==)zR%(py2)s
{%(py2)s = %(py0)s.shared_inbox
} == %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}analyzerr   r   )py0py2py4py5py7zassert %(py9)spy9N)z1%(py2)s
{%(py2)s = %(py0)s.file_glob
} == %(py5)s)rF   rG   rI   assert %(py7)srJ   )z-%(py2)s
{%(py2)s = %(py0)s.limit
} == %(py5)szbassert %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.reports_dir
}.exists
}()
})rF   rG   rH   py6zbassert %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.configs_dir
}.exists
}()
}zcassert %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.synonyms_dir
}.exists
}()
})r   r@   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationrA   rB   reports_direxistsconfigs_dirsynonyms_dir)r   rE   @py_assert1@py_assert6@py_assert3@py_format8@py_format10@py_assert4@py_format6@py_assert5@py_format7s              r   test_analyzer_initializationrc   >   s   H   2DN2 N2222 N22222282228222 222222D222D222222222222N2222222))))))))))))8)))8)))))))))))))>>Q>Q>Q88>Q(&&(&((((((((8(((8((((((&(((((((((((&&(&((((((((8(((8((((((&((((((((((  ) '')'))))))))8)))8))) )))'))))))))))r<   c                    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}}|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}}|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}}|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}}|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}}y	)u   测试列分析功能r@   r   namerC   z%(py1)s == %(py4)spy1rH   assert %(py6)srM   Ntotal_countr?   
null_countr   unique_count   inferred_typestringr-   intr0   decimalr,   list)r   analyze_columnrN   rO   rS   rT   rU   )	r   r;   rE   stats@py_assert0r\   @py_assert2@py_format5rb   s	            r   test_column_analysisry   N   s   (3H ##$56J$KMabE=000=00000=0000=00000000000$1$1$$$$1$$$$$$1$$$$$$$#!#!####!######!####### %A% A%%%% A%%% %%%A%%%%%%%!-X-!X----!X---!---X------- ##$5h$?JE!*U*!U****!U***!***U******* ##$5n$E~VE!.Y.!Y....!Y...!...Y....... ##$5h$?JE!+V+!V++++!V+++!+++V+++++++r<   c                    t        |       }|j                  |d   j                               }d}||kD  }|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}}|j                  }t        |      }d}	||	kD  }
|
s
t        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                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d
x}x}x}
}	y
)u   测试日期解析re   r   g?>z%(py0)s > %(py3)ssuccess_raterF   py3assert %(py5)srI   Nr   )zQ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.date_formats
})
} > %(py8)slenrE   )rF   ri   r   rI   py8zassert %(py10)spy10)r   _try_parse_datesdropnarN   rO   rP   rQ   rR   rS   rT   rU   date_formatsr   )r   r;   rE   r~   rw   rZ   @py_format4r`   r_   @py_assert7r[   @py_format9@py_format11s                r   test_date_parsingr   g   s.   (3H ,,->~-N-U-U-WXL<#<#<<#$$)3$%))%))))%))))))3)))3))))))x)))x)))$)))%))))))))))r<   c                    t        |       }|j                  |d          d}|j                  }||v }|st        j                  d|fd||f      t        j
                  |      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}x}}d}|j                  }||v }|st        j                  d|fd||f      t        j
                  |      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}x}}d}|j                  }||v }|st        j                  d|fd||f      t        j
                  |      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}x}}|j                  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}||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   测试品牌提取re   r   Nikein)z7%(py1)s in %(py5)s
{%(py5)s = %(py3)s.brand_frequency
}rE   ri   r   rI   rL   rJ   NAdidasPumar/   rC   rg   rh   rj   rM   )r   _extract_brandsbrand_frequencyrN   rO   rS   rP   rQ   rR   rT   rU   )r   r;   rE   rv   r_   rw   r`   r]   r\   rx   rb   s              r   test_brand_extractionr   q   s+   (3H ./CDE -X---6-----6----6------X---X-----------/x///8/////8////8//////x///x///////////-X---6-----6----6------X---X-----------##F+0q0+q0000+q000+000q0000000##F+0q0+q0000+q000+000q0000000r<   c                    t        |       }|j                  |d          g }d}|j                  }||v }|}|sd}|j                  }	||	v }
|
}|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }d	d
|iz  }|j                  |       |st        j                  d
fd	f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |	      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}x}x}
}	g }d}|j                  }||v }|}|s*d}|j                  }	||	v }
|
}|
sd}|j                  }||v }|}|s#t        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }d	d
|iz  }|j                  |       |sBt        j                  d|
fd||	f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |	      dz  }dd|iz  }|j                  |       |
st        j                  dfdf      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}x}x}
x}	x}x}}y)u   测试颜色尺码提取re   r   u   黑色u   白色r   )z6%(py3)s in %(py7)s
{%(py7)s = %(py5)s.color_patterns
}rE   )r   rI   rJ   z%(py9)srK   )z:%(py12)s in %(py16)s
{%(py16)s = %(py14)s.color_patterns
})py12py14py16z%(py18)spy18r.   zassert %(py21)spy21NLXL42)z5%(py3)s in %(py7)s
{%(py7)s = %(py5)s.size_patterns
})z9%(py12)s in %(py16)s
{%(py16)s = %(py14)s.size_patterns
})z9%(py21)s in %(py25)s
{%(py25)s = %(py23)s.size_patterns
})r   py23py25z%(py27)spy27zassert %(py30)spy30)r   _extract_color_size_patternscolor_patternsrN   rO   rS   rP   rQ   rR   append_format_booloprT   rU   size_patterns)r   r;   rE   rZ   rw   r[   r_   rv   @py_assert11@py_assert15@py_assert13r]   r^   @py_format17@py_format19@py_format20@py_format22@py_assert20@py_assert24@py_assert22@py_format26@py_format28@py_format29@py_format31s                           r   test_color_size_extractionr      s   (3H ))*;<P*QR V8Ux..U8..U(Uh>U>UU(>U2UUUUU8.UUU8UUUUUUxUUUxUUU.UUUUUUU(>UUUU(UUUUUUhUUUhUUU>UUUUUUUUUUUUUUUl3l(((l3((lDlH4J4JlD4J,JldlV^VlVlldVlNlllll3(lll3llllll(lll(lll(lllllllD4JlllDllllllHlllHlll4JllllllldVlllldllllllV^lllV^lllVllllllllllllllllr<   c                   	 t        |       }|j                  |      	d}	|u}|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}}	fd	d
D        }t        |      }|sddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}}y)u   测试图片分隔符检测re   N)is not)z%(py0)s is not %(py3)ssplitterr   r   rI   c              3   &   K   | ]  }|v  
 y w)N ).0charr   s     r   	<genexpr>z0test_image_splitter_detection.<locals>.<genexpr>   s     C,BDtx,Bs   ),;|z\sz,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)rF   rG   rH   )r   analyze_image_splittersrN   rO   rP   rQ   rR   rS   rT   rU   r   )
r   r;   rE   rw   rZ   r   r`   r\   rx   r   s
            @r   test_image_splitter_detectionr      s    (3H //0ABH  8484884C,BCC3CCCCCCCCC3CCC3CCCCCCCCCCCCCCr<   c                    t        |       }|j                  |      \  }}t        |      }d}||kD  }|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}||kD  }
|
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}
}g }
d}||v }|}|sd}||v }|}|sXt        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  }|
j                  |       |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  }|
j                  |       t        j                  |
d      i z  }dd|iz  }t        t        j                  |            d
x}x}
x}x}x}}y
)u   测试产品键分析re   r   r{   )z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sr   keysrF   ri   r   rM   assert %(py8)sr   Nr}   
uniquenessr   r   rI   r   r&   r   z%(py3)s in %(py5)sr   rI   %(py7)srJ   z%(py10)s in %(py12)sr   r   %(py14)sr   r.   zassert %(py17)spy17)r   analyze_product_keysr   rN   rO   rP   rQ   rR   rS   rT   rU   r   r   )r   r;   rE   r   r   rw   ra   r_   rb   r   rZ   r   r`   rv   @py_assert9r   r]   @py_format13@py_format15@py_format16@py_format18s                        r   test_product_key_analysisr      s   (3H  445FGD* t9q9q=9q33tt9q:>:::>>4'>;>;$+>>>>>4>>>>>>>>>4>>>4>>>>>>>;$>>>;>>>>>>$>>>$>>>>>>>>>>>>>>r<   c                    t        |       dz  }|j                  |d       t        | d      }|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}}|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 ]&  }|j                  |
|   |      }||j                   |<   ( |
g|_        |j%                          |j&                  }d}||z  }|j(                  } |       }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}|j+                          |j,                  }d}||z  }|j(                  } |       }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}t/        |j,                  dz  dd      5 }t1        j2                  |      }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#}|d   }||v }|slt        j                  d|fd$||f      t        j                  |      t        j                  |      d%z  }d&d'|iz  }t        t        j                  |            dx}x}}ddd       |j5                          |j6                  }d(}||z  }|j(                  } |       }|sd)dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}|j6                  }d*}||z  }|j(                  } |       }|sd)dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}|j6                  }d+}||z  }|j(                  } |       }|sd)dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}|j9                          |j&                  }d,}||z  }|j(                  } |       }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}y# 1 sw Y   xY w)-u   测试完整分析流程ztest_orders.xlsxF)indexr>   )r@   rA   r.   rC   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   filesr   r   r   Nr   r?   dfeda.mdznassert %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = (%(py2)s
{%(py2)s = %(py0)s.reports_dir
} / %(py4)s).exists
}()
}rE   )rF   rG   rH   rJ   rK   zcolumn_map.yamlznassert %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = (%(py2)s
{%(py2)s = %(py0)s.configs_dir
} / %(py4)s).exists
}()
}rutf-8encodingcolumnsr   z%(py1)s in %(py3)sconfigri   r   r   rI   product_keyr   z%(py1)s in %(py4)srh   rj   rM   zbrand_aliases.csvzoassert %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = (%(py2)s
{%(py2)s = %(py0)s.synonyms_dir
} / %(py4)s).exists
}()
}zcolor_aliases.csvzsize_aliases.csvzparsing_rules.md)r   to_excelr   find_excel_filesr   rN   rO   rP   rQ   rR   rS   rT   rU   read_excel_filer   rt   column_statsall_datagenerate_eda_reportrV   rW   generate_column_maprX   openyaml	safe_loadgenerate_synonymsrY   generate_parsing_rules)r   r;   
excel_pathrE   r   rw   ra   r_   rb   r   r   colru   rZ   r\   r[   @py_assert8r^   fr   rv   r   r`   rx   s                           r   test_full_analysis_flowr      s    h"44Jz7 H %%'Eu::?:33uu:		!	!%(	+Br7a7a<7a33rr7a zz''35%*c"  H   "  585 8+5+335355555555H555H555 5558555355555555555   "  >#4> #44>4<<><>>>>>>>>H>>>H>>> >>>#4>>><>>>>>>>>>>> 
h""%66g	NRS""yF""""yF"""y""""""F"""F"""""""&}&&&&}&&&}&&&&&&&&&&&&&&&&#8vi'88#'88888#'8888#888'88888888	 
O  !!A$7A!$77A7??A?AAAAAAAAHAAAHAAA!AAA$7AAA?AAAAAAAAAAA!!A$7A!$77A7??A?AAAAAAAAHAAAHAAA!AAA$7AAA?AAAAAAAAAAA!!@$6@!$66@6>>@>@@@@@@@@H@@@H@@@!@@@$6@@@>@@@@@@@@@@@ ##%  ?#5? #55?5==?=????????H???H??? ???#5???=??????????? 
O	Ns   9Gii'c                 8   t        |       }t        j                  g ddz        }|j                  |d      }d}|j                  }||v }|st        j                  d|fd||f      t        j                  |      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}x}}d}|j                  d   }	||	v }|slt        j                  d|fd||	f      t        j                  |      t        j                  |	      dz  }
dd|
iz  }t        t        j                  |            dx}x}}	d}|j                  d   }	||	v }|slt        j                  d|fd||	f      t        j                  |      t        j                  |	      dz  }
dd|
iz  }t        t        j                  |            dx}x}}	d}|j                  d   }	||	v }|slt        j                  d|fd||	f      t        j                  |      t        j                  |	      dz  }
dd|
iz  }t        t        j                  |            dx}x}}	y)u   测试枚举值检测re   )	   已付款	   未付款r   	   已退款r   d   u   支付状态r   )z7%(py1)s in %(py5)s
{%(py5)s = %(py3)s.enum_candidates
}rE   r   rL   rJ   Nr   r   rh   rj   rM   r   r   )r   r8   Seriesrt   enum_candidatesrN   rO   rS   rP   rQ   rR   rT   rU   )r   rE   	enum_dataru   rv   r_   rw   r`   r]   r\   rx   rb   s               r   test_enum_detectionr     s   (3H 		[^aabI##I~>E5X555>55555>5555>555555X555X55555555555B(22>BB;BBBBB;BBBB;BBBBBBBBBBBB(22>BB;BBBBB;BBBB;BBBBBBBBBBBB(22>BB;BBBBB;BBBB;BBBBBBBBBBBr<   c                     t        d      } ddgiddgiddgiddgid| _        | j                  j                  d	d	
       | j	                          t        | j                  dz  dd      5 }|j                         }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}}g }d}||v }|}|sd}	|	|v }
|
}|
s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  }|j                  |       |st        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  }|j                  |       |
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  }|j                  |       t        j                   |d&      i z  }d'd(|iz  }t        t        j                  |            dx}x}x}x}x}	x}
x}}ddd       y# 1 sw Y   yxY w))u   测试敏感数据检测.re   sample_values11010119900101123413812345678ztest@example.comu   普通数据)u   买家身份证u	   手机号   邮箱u   普通字段T)exist_okparentsr   r   r   r   u   敏感信息检测r   r   contentr   r   rI   Nu	   身份证u   手机r  r   r   r   rJ   r   r   r   r   )z%(py17)s in %(py19)s)r   py19z%(py21)sr   r.   zassert %(py24)spy24)r   r   rV   mkdirr   r   readrN   rO   rS   rP   rQ   rR   rT   rU   r   r   )rE   r   r
  rv   rw   r   r`   rZ   r_   r   r   @py_assert16@py_assert18r]   r   r   r   r   @py_format23@py_format25s                       r   test_sensitive_data_detectionr     s    #.H+.B-CD%7"%7$89(>*:;	H d;  " 
h""X-sW	E&&(#.#w....#w...#......w...w.......S{S{g%SSW)<SSG@SSSSS{gSSS{SSSSSSgSSSgSSSSSSSSWSSSSSSSSSWSSSWSSSSSSSGSSSSSSSSSGSSSGSSSSSSSSSSSSSSS 
F	E	Es   -KMM__main__z-v)*__doc__builtinsrP   _pytest.assertion.rewrite	assertionrewriterN   ossysr
   r   pathlibr   pandasr8   numpynpr   pytest__file__parentproject_rootpathinsertstranalyze_ordersr   fixturer   r;   rc   ry   r   r   r   r   r   r   r  r  __name__mainr   r<   r   <module>r+     s    	 
        H~$$++22 3|i/0 1 3|i/0 1 (    <* ,2*1	m	D
?1@hCT* zFKK4 ! r<   