Files
vibe_data_ana/tests/__pycache__/test_requirement_understanding.cpython-311-pytest-8.3.3.pyc

208 lines
36 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<1F><>ii*<00><00><><00>dZddlZddlmcmZddlZddlZddl Z ddl
m Z m Z m Z mZddlmZmZddlmZmZejd<06><00><00>Zd<07>Zd<08>Zd <09>Zd
<EFBFBD>Zd <0B>Zd <0C>Zd <0A>Zd<0E>Zd<0F>Zd<10>Z d<11>Z!d<12>Z"dS)z0Unit tests for requirement understanding engine.<2E>N)<04>understand_requirement<6E>parse_template<74>check_data_requirement_match<63>#_fallback_requirement_understanding<6E><02> DataProfile<6C>
ColumnInfo)<02>RequirementSpec<65>AnalysisObjectivec<00><00>tdddtddddddgi<00> <09><00>td
d d dgd <0A>i<00> <09><00>tdd ddddgi<00> <09><00>tddddgd<14>ddd<17><02> <09><00>tddddddgi<00> <09><00>gddd
dd<1F>d d!<21>"<22><00>S)#z)Create a sample data profile for testing.<2E>test.csvi<76><00><00>
created_at<EFBFBD>datetime<6D>z
2024-01-01z
2024-01-02)<06>name<6D>dtype<70> missing_rate<74> unique_count<6E> sample_values<65>
statistics<EFBFBD>status<75> categoricalg<6C><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)<03>open<65>closed<65>pending<6E>type<70>
<00>bug<75>feature<72>priority<74>numeric)<05><00><00><00>rg@g333333<33>?)<02>mean<61>std<74> description<6F>textg<74><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?i<>zIssue 1zIssue 2<>ticket)<03>timerrg@U@z(Ticket data with 1000 rows and 5 columns)<08> file_path<74> row_count<6E> column_count<6E>columns<6E> inferred_type<70>
key_fields<EFBFBD> quality_score<72>summaryr<00><00><00>KD:\code\iov_data_analysis_agent_old\tests\test_requirement_understanding.py<70>sample_data_profiler8s!<00><00> <17><1C><16><16> <16>!<21> <20> <20>!<21>+<2B>\<5C>:<3A><1D>  <0E> <0E> <0E> <17><1D>#<23> <20><1E>;<3B>;<3B>;<3B><1D>  <0E> <0E> <0E> <17><1B>#<23> <20><1F>$<24>i<EFBFBD>0<><1D>  <0E> <0E> <0E> <17><1F><1F> <20><1E>-<2D>o<EFBFBD>o<EFBFBD>$'<27><03>4<>4<>  <0E> <0E> <0E> <17>"<22><1C>!<21> <20>(<28>)<29>4<><1D>  <0E> <0E> <0E>C)
<EFBFBD>T<1F>(<28>H<EFBFBD>f<EFBFBD>M<>M<><1A>:<3A>c2 <06>2 <06>2 <06>2r6c<00><><00>d}t||d<02><00>}t|t<00><00>}|<03>sddtj<00><00>vst jt<00><00>rt jt<00><00>nddtj<00><00>vst j|<02><00>rt j|<02><00>nddtj<00><00>vst jt<00><00>rt jt<00><00>ndt j|<03><00>d<07>z}tt j |<04><00><00><00><00>d}|j
}||k}|s<>t j d|fd ||f<02><00>dtj<00><00>vst j|<02><00>rt j|<02><00>ndt j|<05><00>d
tj<00><00>vst j|<01><00>rt j|<01><00>nd
d <0B>z}d d |iz}tt j |<06><00><00><00><00>dx}}|j }t|<07><00>}d} || k}
|
<EFBFBD>st j d|
fd|| f<02><00>dtj<00><00>vst jt<00><00>rt jt<00><00>nddtj<00><00>vst j|<02><00>rt j|<02><00>ndt j|<07><00>t j|<08><00>t j| <09><00>d<12>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}x}
} d<15>|j D<00><00>} t| <0A><00>}d}||k}|s<>t j d|fd||f<02><00>dtj<00><00>vst jt<00><00>rt jt<00><00>nddtj<00><00>vst j| <0A><00>rt j| <0A><00>ndt j|<07><00>t j|<0E><00>d<18>z}dd|iz} tt j | <0B><00><00><00><00>dx}x}}| d}|j}t|<07><00>}d} || k}
|
<EFBFBD>st j d|
fd|| f<02><00>dtj<00><00>vst jt<00><00>rt jt<00><00>nddtj<00><00>vst j|<0F><00>rt j|<0F><00>ndt j|<07><00>t j|<08><00>t j| <09><00>d<12>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}x}
} g}|j}d}
||
k}|}|r|j}d}||k}|}|<10>s~t j d|fd ||
f<02><00>dtj<00><00>vst j|<0F><00>rt j|<0F><00>ndt j|<03><00>t j|
<EFBFBD><00>d!<21>z}d"d#|iz}|<05>|<15><00>|r<>t j d$|fd%||f<02><00>dtj<00><00>vst j|<0F><00>rt j|<0F><00>ndt j|<11><00>t j|<12><00>d&<26>z}d'd(|iz}|<05>|<17><00>t j|d<0E><00>iz}d)d*|iz}tt j |<19><00><00><00><00>dx}x}x}x}x}
x}x}}dS)+u+Test understanding "健康度" requirement.u我想了解工单的健康度N<E5BAA6>5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}<7D>
isinstance<EFBFBD> requirementr
<00><04>py0<79>py1<79>py2<79>py4<79><01>==)z2%(py2)s
{%(py2)s = %(py0)s.user_input
} == %(py4)s<>
user_input<EFBFBD>r>r@rA<00>assert %(py6)s<>py6r<00><01>><3E>zO%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.objectives
})
} > %(py8)s<>len<65>r>r?<00>py3<79>py5<79>py8<79>assert %(py10)s<>py10c<00>$<00>g|] }d|jv<00> |<01><02>S)u健康<E581A5>r<00><02>.0<EFBFBD>objs r7<00>
<listcomp>z6test_understand_health_requirement.<locals>.<listcomp>Vs$<00><00>W<>W<>W<><13>(<28>c<EFBFBD>h<EFBFBD>BV<42>BV<42><13>BV<42>BV<42>BVr6<00>z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)s<>health_objectives<65>r>r?rMrG<00>assert %(py8)srO<00>zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.metrics
})
} > %(py8)s<>
health_objr#r<00><01>>=)z0%(py4)s
{%(py4)s = %(py2)s.priority
} >= %(py7)s)r@rA<00>py7z%(py9)s<>py9)<01><=)z4%(py13)s
{%(py13)s = %(py11)s.priority
} <= %(py16)s)<03>py11<31>py13<31>py16z%(py18)s<>py18zassert %(py21)s<>py21)rr;r
<00> @py_builtins<6E>locals<6C>
@pytest_ar<61>_should_repr_global_name<6D> _saferepr<70>AssertionError<6F>_format_explanationrD<00>_call_reprcompare<72>
objectivesrK<00>metricsr!<00>append<6E>_format_boolop)r8rDr<<00> @py_assert3<74> @py_format5<74> @py_assert1<74> @py_format7<74> @py_assert2<74> @py_assert4<74> @py_assert7<74> @py_assert6<74> @py_format9<74> @py_format11rY<00> @py_assert5r]<00> @py_assert0<74> @py_assert12<31> @py_assert15<31> @py_assert14<31> @py_format8<74> @py_format10<31> @py_format17<31> @py_format19<31> @py_format20<32> @py_format22s r7<00>"test_understand_health_requirementr<74>IsB<00><00>1<>J<EFBFBD>6<>j<EFBFBD>BU<42>W[<5B>\<5C>\<5C>K<EFBFBD>4<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>X<01>W<> <0B>(><3E>W<>W<>W<><15>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>#<23>1<EFBFBD>%<25>J<EFBFBD>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@r6c<00><><00>d}t||d<02><00>}d<03>|jD<00><00>}t|<03><00>}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstjt<00><00>rtjt<00><00>nddt j<00><00>vstj|<03><00>rtj|<03><00>ndtj|<04><00>tj|<05><00>d <09>z}d
d |iz}ttj
|<08><00><00><00><00>dx}x}}|d} | j }t|<04><00>}d}
||
k} | <0B>stjd| fd ||
f<02><00>dt j<00><00>vstjt<00><00>rtjt<00><00>ndd t j<00><00>vstj| <09><00>rtj| <09><00>nd tj|<04><00>tj|<06><00>tj|
<EFBFBD><00>d<0E>z}dd|iz} ttj
| <0C><00><00><00><00>dx}x}x} }
dS)z.Test understanding trend analysis requirement.u 分析趋势Nc<00>$<00>g|] }d|jv<00> |<01><02>S)<01>趋势rSrTs r7rWz5test_understand_trend_requirement.<locals>.<listcomp>fs$<00><00>V<>V<>V<><03><18>S<EFBFBD>X<EFBFBD>AU<41>AU<41><03>AU<41>AU<41>AUr6rrHrXrK<00>trend_objectivesrZr[rOr\<00> trend_objrLrPrQ) rrprKrjrorhrirkrlrmrnrq) r8rDr<r<>rxr~ryrwr|r<>rzr{r}s r7<00>!test_understand_trend_requirementr<74>_s<><00><00><1F>J<EFBFBD>5<>j<EFBFBD>BU<42>W[<5B>\<5C>\<5C>K<EFBFBD>W<01>V<>{<7B>'=<3D>V<>V<>V<><14>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>!<21><11>#<23>I<EFBFBD>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%r6c<00>p<00>d}t||d<02><00>}d<03>|jD<00><00>}t|<03><00>}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstjt<00><00>rtjt<00><00>nddt j<00><00>vstj|<03><00>rtj|<03><00>ndtj|<04><00>tj|<05><00>d <09>z}d
d |iz}ttj
|<08><00><00><00><00>dx}x}}dS) z5Test understanding distribution analysis requirement.u查看分布情况Nc<00>$<00>g|] }d|jv<00> |<01><02>S)u分布rSrTs r7rWz<test_understand_distribution_requirement.<locals>.<listcomp>us$<00><00>U<>U<>U<>s<EFBFBD><08>C<EFBFBD>H<EFBFBD>@T<>@T<>s<EFBFBD>@T<>@T<>@Tr6rrHrXrK<00>dist_objectivesrZr[rO) rrprKrjrorhrirkrlrmrn) r8rDr<r<>rxr~ryrwr|s r7<00>(test_understand_distribution_requirementr<74>nsb<00><00>%<25>J<EFBFBD>5<>j<EFBFBD>BU<42>W[<5B>\<5C>\<5C>K<EFBFBD>V<01>U<>k<EFBFBD>&<<3C>U<>U<>U<>O<EFBFBD>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#r6c<00><><00>d}t||d<02><00>}|j}t|<03><00>}d}||k}|<06>stjd|fd||f<02><00>dt j<00><00>vstjt<00><00>rtjt<00><00>nddt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>tj|<04><00>tj|<05><00>d<08>z}d d
|iz}ttj
|<08><00><00><00><00>dx}x}x}}d <0B>|jD<00><00>} t| <09><00>}
|
s<EFBFBD>d d t j<00><00>vstjt<00><00>rtjt<00><00>nd tj| <09><00>tj|
<EFBFBD><00>d<0E>z} ttj
| <0B><00><00><00><00>dx} }
dS)zATest understanding generic requirement without specific keywords.u帮我分析一下NrrHrJrKr<rLrPrQc3<00>^K<00>|](}d|jvpd|j<00><00><00>vV<00><00>)dS)u综合<E7BBBC>analysisN)r<00>lowerrTs r7<00> <genexpr>z6test_understand_generic_requirement.<locals>.<genexpr><3E>sH<00><00><00><00>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>hr6z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}<7D>anyrE) rrprKrjrorhrirkrlrmrnr<>) r8rDr<rxryrzr{r|r}rvrtrus r7<00>#test_understand_generic_requirementr<74>ys)<00><00>%<25>J<EFBFBD>5<>j<EFBFBD>BU<42>W[<5B>\<5C>\<5C>K<EFBFBD>+<2B>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>i<01>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>h<>hr6c<00><><00>d}tjdddd<05><06><00>5}|<01>|<00><00>|j}ddd<07><00>n #1swxYwY t |<02><00>}|d}t |<04><00>}d }||k}|s<>t jd
|fd ||f<02><00>d tj <00><00>vst j
t
<00><00>rt j t
<00><00>nd t j |<04><00>t j |<05><00>t j |<06><00>d <0A>z}dd|iz} tt j | <09><00><00><00><00>dx}x}x}}d}
|d}|
|v} | slt jd| fd|
|f<02><00>t j |
<EFBFBD><00>t j |<05><00>d<13>z} dd| iz} tt j | <0A><00><00><00><00>dx}
x} }d}
|d}|
|v} | slt jd| fd|
|f<02><00>t j |
<EFBFBD><00>t j |<05><00>d<13>z} dd| iz} tt j | <0A><00><00><00><00>dx}
x} }|d}t |<04><00>}d}||k}|s<>t jd
|fd ||f<02><00>d tj <00><00>vst j
t
<00><00>rt j t
<00><00>nd t j |<04><00>t j |<05><00>t j |<06><00>d <0A>z}dd|iz} tt j | <09><00><00><00><00>dx}x}x}}|d}t |<04><00>}d}||k}|s<>t jd
|fd ||f<02><00>d tj <00><00>vst j
t
<00><00>rt j t
<00><00>nd t j |<04><00>t j |<05><00>t j |<06><00>d <0A>z}dd|iz} tt j | <09><00><00><00><00>dx}x}x}}tj|<02><00>dS#tj|<02><00>wxYw)z$Test parsing template with sections.u<># 分析报告
## 数据概览
这是数据概览部分
## 趋势分析
指标: 增长率, 变化趋势
图表: 时间序列图
## 分布分析
指标: 类别分布
图表: 柱状图, 饼图
<EFBFBD>w<>.mdF<64>utf-8<><04>mode<64>suffix<69>delete<74>encodingN<67>sectionsr%r^)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)srK<00>r>r@rAr`<00>assert %(py9)srau 分析报告<E68AA5><01>in)z%(py1)s in %(py4)s<>r?rArFrGu 数据概览<E6A682>required_metricsr$<00>required_charts)<10>tempfile<6C>NamedTemporaryFile<6C>writerrrKrjrorhrirkrlrmrn<00>os<6F>unlink)<0E>template_content<6E>f<> template_path<74> template_reqrvrtr{r~r<>r<>rrxrurws r7<00>!test_parse_template_with_sectionsr<73><00>s`<00><00> <04><14>
<12> $<24>#<23>e<EFBFBD>E<EFBFBD>T[<5B> \<5C> \<5C> \<5C><1F>`a<> <09><07><07> <20>!<21>!<21>!<21><19><06> <0A><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><><EFBFBD><EFBFBD><1F><1F><1F><1F>!<21>%<25>m<EFBFBD>4<>4<> <0C> 2<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<> :<3A>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<> 9<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<> <0B> <09>-<2D> <20> <20> <20> <20> <20><><02> <09>-<2D> <20> <20> <20> <20><><EFBFBD>s<00>A<03>A<07> A<07>O#Q <00> Qc<00><<00>td<01><00>}|d}g}||k}|sltjd|fd||f<02><00>tj|<01><00>tj|<02><00>d<05>z}dd|iz}t tj|<05><00><00><00><00>dx}x}}|d }g}||k}|sltjd|fd||f<02><00>tj|<01><00>tj|<02><00>d<05>z}dd|iz}t tj|<05><00><00><00><00>dx}x}}|d
}g}||k}|sltjd|fd||f<02><00>tj|<01><00>tj|<02><00>d<05>z}dd|iz}t tj|<05><00><00><00><00>dx}x}}dS) z#Test parsing non-existent template.znonexistent.mdr<64>rB)z%(py1)s == %(py4)sr<73>rFrGNr<4E>r<>)rrjrorlrmrn)r<>rrtrxrurws r7<00>test_parse_nonexistent_templater<65><00>s"<00><00>!<21>"2<>3<>3<>L<EFBFBD>*<2A>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0r6c <00>R<00>tdtdddgd<05><06><00>g<01><07><00>}t||<00><00>}|d}d }||u}|sltjd
|fd ||f<02><00>tj|<03><00>tj|<04><00>d <0C>z}d d|iz}t tj|<07><00><00><00><00>dx}x}}|d}t|<08><00>}d} || k}
|
s<EFBFBD>tjd|
fd|| f<02><00>dtj
<00><00>vstj t<00><00>rtjt<00><00>ndtj|<08><00>tj|<04><00>tj| <09><00>d<15>z} dd| iz} t tj| <0C><00><00><00><00>dx}x}x}
} dS)z.Test checking when data satisfies requirement.u分析状态分布<E58886> 状态分析u分析状态字段的分布<E58886> 状态分布r<00>rr)rqr!<00>rDrp<00> can_proceedT<64><01>is<69>z%(py1)s is %(py4)sr<73>rFrGN<>satisfied_objectivesrrH<00>z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)srKr<>r<>ra<00> r
r rrjrorlrmrnrKrhrirk<00> r8r<<00> match_resultrrtrxrurwrvr{r~r<>r<>s r7<00>%test_check_data_satisfies_requirementr<74><00>s<00><00>"<22>'<27> <1D>#<23>9<>'<27>(<28><1A>  <0E> <0E> <0E>
<EFBFBD>
<06>
<06>
<06>K<EFBFBD>0<> <0B>=P<>Q<>Q<>L<EFBFBD>/<2F>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8r6c <00>@<00>tdtddddgd<06><07><00>g<01><08><00>}t||<00><00>}t|t<00><00>}|<03>sd d
t j<00><00>vstjt<00><00>rtj t<00><00>nd
d t j<00><00>vstj|<02><00>rtj |<02><00>nd d t j<00><00>vstjt<00><00>rtj t<00><00>nd tj |<03><00>d <0A>z}ttj |<04><00><00><00><00>d}d}||v}|s<>tj d|fd||f<02><00>tj |<05><00>d t j<00><00>vstj|<02><00>rtj |<02><00>nd d<12>z}dd|iz}ttj |<08><00><00><00><00>dx}}d}||v}|s<>tj d|fd||f<02><00>tj |<05><00>d t j<00><00>vstj|<02><00>rtj |<02><00>nd d<12>z}dd|iz}ttj |<08><00><00><00><00>dx}}dS)z3Test checking when data is missing required fields.u分析地理分布u 地理分析u分析地理位置分布u 地理分布u 区域统计rr<>r<>r:r;r<><00>dictr=N<>missing_fieldsr<73>)z%(py1)s in %(py3)s)r?rMzassert %(py5)srN<00>unsatisfied_objectives) r
r rr;r<>rhrirjrkrlrmrnro) r8r<r<>rtrurrx<00> @py_format4<74> @py_format6s r7<00>test_check_data_missing_fieldsr<73><00>s<><00><00>"<22>'<27> <1D>#<23>6<>'<27><1E>8<><1A>  <0E> <0E> <0E>
<EFBFBD>
<06>
<06>
<06>K<EFBFBD>0<> <0B>=P<>Q<>Q<>L<EFBFBD>*<2A>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3r6c <00>t<00>tdtddddgd<06><07><00>g<01><08><00>}t||<00><00>}|d }d
}||u}|sltjd |fd ||f<02><00>tj|<03><00>tj|<04><00>d <0A>z}dd|iz}t tj|<07><00><00><00><00>dx}x}}dS)z%Test checking time-based requirement.u分析时间趋势u 时间分析u分析随时间的变化u 时间序列r<E58897>rr<>r<>r<>Tr<54>r<>r<>rFrGN)r
r rrjrorlrmrn)r8r<r<>rrtrxrurws r7<00>!test_check_time_based_requirementr<74><00>s <00><00>!<21>'<27> <1D>#<23>6<>'<27><18>2<><1A>  <0E> <0E> <0E>
<EFBFBD>
<06>
<06>
<06>K<EFBFBD>0<> <0B>=P<>Q<>Q<>L<EFBFBD>/<2F>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.r6c <00>T<00>tdtddddgd<06><07><00>g<01><08><00>}t||<00><00>}|d }d
}||u}|sltjd |fd ||f<02><00>tj|<03><00>tj|<04><00>d <0A>z}dd|iz}t tj|<07><00><00><00><00>dx}x}}|d}t|<08><00>}d} || k}
|
s<EFBFBD>tjd|
fd|| f<02><00>dtj
<00><00>vstj t<00><00>rtjt<00><00>ndtj|<08><00>tj|<04><00>tj| <09><00>d<16>z} dd| iz} t tj| <0C><00><00><00><00>dx}x}x}
} dS)z'Test checking status-based requirement.u 分析状态r<E68081>u分析状态字段r<E6AEB5>u 状态变化rr<>r<>r<>Tr<54>r<>r<>rFrGNr<4E>rrHr<>rKr<>r<>rar<>r<>s r7<00>#test_check_status_based_requirementr<74><00>s<00><00>!<21>!<21> <1D>#<23>0<>'<27><1E>8<><1A>  <0E> <0E> <0E>
<EFBFBD>
<06>
<06>
<06>K<EFBFBD>0<> <0B>=P<>Q<>Q<>L<EFBFBD>/<2F>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8r6c<00>j<00>d}tjdddd<05><06><00>5}|<02>|<01><00>|j}ddd<07><00>n #1swxYwY t d||<03><00>}|j}||k}|s<>t jd |fd
||f<02><00>d tj <00><00>vst j
|<04><00>rt j |<04><00>nd t j |<05><00>d tj <00><00>vst j
|<03><00>rt j |<03><00>nd d <0A>z}dd|iz}tt j |<08><00><00><00><00>dx}}|j}d} || u}|s<>t jd|fd|| f<02><00>d tj <00><00>vst j
|<04><00>rt j |<04><00>nd t j |<05><00>t j | <09><00>d<12>z}
dd|
iz} tt j | <0B><00><00><00><00>dx}x}} d} |j} | | v} | s<>t jd| fd| | f<02><00>t j | <0C><00>d tj <00><00>vst j
|<04><00>rt j |<04><00>nd t j | <09><00>d<18>z}
dd|
iz} tt j | <0B><00><00><00><00>dx} x} } d} |j} | | v} | s<>t jd| fd| | f<02><00>t j | <0C><00>d tj <00><00>vst j
|<04><00>rt j |<04><00>nd t j | <09><00>d<18>z}
dd|
iz} tt j | <0B><00><00><00><00>dx} x} } tj|<03><00>dS#tj|<03><00>wxYw)z-Test requirement understanding with template.ul# 工单分析报告
## 状态分析
指标: 状态分布, 完成率
## 类型分析
指标: 类型分布
r<EFBFBD>r<>Fr<46>r<>Nu按模板分析rB)z5%(py2)s
{%(py2)s = %(py0)s.template_path
} == %(py4)sr<r<>rErFrG)<01>is not)zA%(py2)s
{%(py2)s = %(py0)s.template_requirements
} is not %(py5)s)r>r@rNzassert %(py7)sr`r<>r<>)z=%(py1)s in %(py5)s
{%(py5)s = %(py3)s.template_requirements
})r?rMrNr<>)r<>r<>r<>rrr<>rjrorhrirkrlrmrn<00>template_requirementsr<73>r<>)r8r<>r<>r<>r<rvrtrurwryr<>r<>rrxs r7<00>test_requirement_with_templater<65> s<><00><00><04><14>
<12> $<24>#<23>e<EFBFBD>E<EFBFBD>T[<5B> \<5C> \<5C> \<5C><1F>`a<> <09><07><07> <20>!<21>!<21>!<21><19><06> <0A><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><><EFBFBD><EFBFBD><1F><1F><1F><1F>!<21>9<> <1D> <1F> <19>
<EFBFBD>
<EFBFBD> <0B> :<3A>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C> ?<3F>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<>F<> <0B> <09>-<2D> <20> <20> <20> <20> <20><><02> <09>-<2D> <20> <20> <20> <20><><EFBFBD>s<00>A<03>A<07> A<07>L6N<00>N2c <00><><00>tdddtdddd<02><07><00>tdd dd
<EFBFBD><07><00>td d dd<02><07><00>gd d<0E><0F><00>}td|d<11><00>}|j}t |<02><00>}d}||k}|<05>st jd|fd||f<02><00>dtj<00><00>vst j t<00><00>rt j
t<00><00>nddtj<00><00>vst j |<01><00>rt j
|<01><00>ndt j
|<02><00>t j
|<03><00>t j
|<04><00>d<17>z}dd|iz}tt j |<07><00><00><00><00>dx}x}x}}|jD]<5D>}d} |j }
| |
k}d
}|
|k} |r| s<>t jd|| fd| |
|f<03><00>t j
| <09><00>dtj<00><00>vst j |<08><00>rt j
|<08><00>ndt j
|
<EFBFBD><00>t j
|<04><00>d<1E>z}dd|iz}tt j |<07><00><00><00><00>dx} x}x} x}
}<04><>dS)z5Test that multiple objectives have proper priorities.r <00>dr%<00>col1r"r)rrrr<00>col2rr<00>col3r<00>unknowng<00>V@)r-r.r/r0r1r3u'完整分析包括健康度和趋势Nr$r^)zP%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.objectives
})
} >= %(py8)srKr<rLrPrQr#)rbrb)z0%(py1)s <= %(py6)s
{%(py6)s = %(py4)s.priority
}z0%(py6)s
{%(py6)s = %(py4)s.priority
} <= %(py8)srV)r?rArGrO)rr rrprKrjrorhrirkrlrmrnr!) <0C> data_profiler<rxryrzr{r|r}rVrr~rts r7<00>!test_multiple_objectives_priorityr<79>.s<00><00><1E><1C><15><16> <16>F<EFBFBD>)<29>#<23>TW<54> X<> X<> X<> <16>F<EFBFBD>-<2D>c<EFBFBD>XY<58> Z<> Z<> Z<> <16>F<EFBFBD>*<2A>3<EFBFBD>UX<55> Y<> Y<> Y<>
<EFBFBD>
 <20><1A> <06> <06> <06>L<EFBFBD>6<>1<><14> <0C><06><06>K<EFBFBD>,<2C>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B><1B>%<25>&<26>&<26><03>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>&<26>&r6)#<23>__doc__<5F>builtinsrh<00>_pytest.assertion.rewrite<74> assertion<6F>rewriterj<00>pytestr<74>r<><00>%src.engines.requirement_understandingrrrr<00>src.models.data_profilerr <00>src.models.requirement_specr
r <00>fixturer8r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r5r6r7<00><module>r<>s<><00><01>6<>6<><00><00><00><00><00><00><00><00><00><00><00><00><00> <0A> <0A> <0A> <0A><0F><0F><0F><0F> <09> <09> <09> <09><02><02><02><02><02><02><02><02><02><02><02><02> <<3C>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>J<>J<>J<>J<>J<>J<>J<>J<><08><1E>4<06>4<06><10><1E>4<06>nA<01>A<01>A<01>, &<26> &<26> &<26>$<24>$<24>$<24>
i<01>
i<01>
i<01>#!<21>#!<21>#!<21>L1<>1<>1<>9<>9<>9<>,4<>4<>4<>./<2F>/<2F>/<2F>(9<>9<>9<>*!<21>!<21>!<21>D&<26>&<26>&<26>&<26>&r6