2016-10-27 8 views
2

私は、テストケースのリストを含むHTMLテストレポートファイルを持っています。各テストケースは、HTMLテーブル内に一列に並んでいます。 私は、各行のテーブルからテストケースを取り出すことができました。 私はこれを私の電子メールコードに書いても、HTMLのようなテーブル形式では書いていません。私はテーブルとしてうまく表示するように行と列のグリッド線を維持したいと思います。データを抽出するBeautifulSoup HTMLテーブルから抽出したデータが同じテーブル形式で出力されません。テーブル形式を維持することができます

私の方法は次のとおりです。

test_000001_login_valid_user 
pass 
test_000002_select_a_project 
pass 
test_000003_verify_Lademo_CRM_DataPreview_is_present 
pass 
test_000004_view_data_preview_Lademo_CRM_and_test_scrollpage 
pass 

私の所望の出力は、次の形式で次のようになります。

def extract_testcases_from_report_htmltestrunner(): 
    filename = (r"E:\test_runners project\selenium_regression_test\TestReport\ClearCore_Automated_GUI_Regression_Project_TestReport.html") 
    html_report_part = open(filename,'r') 
    soup = BeautifulSoup(html_report_part, "html.parser") 
    for div in soup.select("#result_table tr div.testcase"): 
      yield div.text.strip().encode('utf-8'), div.find_next("a").text.strip().encode('utf-8') 

私が手に出力されているから、私は私の電子メールのコードにそれを書くとき可能であればテーブル行を使用するか、HTMLの場合と同じ表形式にしてください。

test_000001_login_valid_user         pass 
test_000002_select_a_project         pass 
test_000003_verify_Lademo_CRM_DataPreview_is_present   pass 
test_000004_view_data_preview_Lademo_CRM_and_test_scrollpage pass 

HTMLスニペットは:

<div class='heading'> 
    <h1>Test Report</h1> 
    <p class='attribute'><strong>Start Time:</strong> 2016-10-27 10:06:59</p> 
    <p class='attribute'><strong>Duration:</strong> 0:57:01.842000</p> 
    <p class='attribute'><strong>Status:</strong> Pass 93</p> 

    <p class='description'>Selenium - ClearCore Regression Project Automated Test</p> 
</div> 
<p id='show_detail_line'>Show 
    <a href='javascript:showCase(0)'>Summary</a> 
    <a href='javascript:showCase(1)'>Failed</a> 
    <a href='javascript:showCase(2)'>All</a> 
</p> 
<table id='result_table'> 
    <colgroup> 
     <col align='left' /> 
     <col align='right' /> 
     <col align='right' /> 
     <col align='right' /> 
     <col align='right' /> 
     <col align='right' /> 
    </colgroup> 
    <tr id='header_row'> 
     <td>Test Group/Test case</td> 
     <td>Count</td> 
     <td>Pass</td> 
     <td>Fail</td> 
     <td>Error</td> 
     <td>View</td> 
    </tr> 

    <tr class='passClass'> 
     <td>Regression_TestCase.RegressionProject_TestCase</td> 
     <td>47</td> 
     <td>47</td> 
     <td>0</td> 
     <td>0</td> 
     <td><a href="javascript:showClassDetail('c1',47)">Detail</a></td> 
    </tr> 

    <tr id='pt1.1' class='hiddenRow'> 
     <td class='none'><div class='testcase'>test_000001_login_valid_user</div></td> 
     <td colspan='5' align='center'> 

      <!--css div popup start--> 
      <a class="popup_link" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.1')" > 
     pass</a> 

      <div id='div_pt1.1' class="popup_window"> 
       <div style='text-align: right; color:red;cursor:pointer'> 
        <a onfocus='this.blur();' onclick="document.getElementById('div_pt1.1').style.display = 'none' " > 
      [x]</a> 
       </div> 
       <pre> 

pt1.1: *** test_login_valid_user *** 
test login with a valid user - Passed 


       </pre> 
      </div> 
      <!--css div popup end--> 

     </td> 
    </tr> 

    <tr id='pt1.2' class='hiddenRow'> 
     <td class='none'><div class='testcase'>test_000002_select_a_project</div></td> 
     <td colspan='5' align='center'> 

      <!--css div popup start--> 
      <a class="popup_link" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.2')" > 
     pass</a> 

      <div id='div_pt1.2' class="popup_window"> 
       <div style='text-align: right; color:red;cursor:pointer'> 
        <a onfocus='this.blur();' onclick="document.getElementById('div_pt1.2').style.display = 'none' " > 
      [x]</a> 
       </div> 
       <pre> 

pt1.2: *** test_login_valid_user *** 
test login with a valid user - Passed 

       </pre> 
      </div> 
      <!--css div popup end--> 

     </td> 
    </tr> 

    <tr id='pt1.3' class='hiddenRow'> 
     <td class='none'><div class='testcase'>test_000057_run_clean_and_match_process</div></td> 
     <td colspan='5' align='center'> 

      <!--css div popup start--> 
      <a class="popup_link" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.3')" > 
     pass</a> 

      <div id='div_pt1.3' class="popup_window"> 
       <div style='text-align: right; color:red;cursor:pointer'> 
        <a onfocus='this.blur();' onclick="document.getElementById('div_pt1.3').style.display = 'none' " > 
      [x]</a> 
       </div> 
       <pre> 

pt1.3: *** test_login_valid_user *** 
test login with a valid user - Passed 

       </pre> 
      </div> 
      <!--css div popup end--> 

     </td> 
    </tr> 

    <tr id='pt1.4' class='hiddenRow'> 
     <td class='none'><div class='testcase'>test_000058_view_all_records_report_CRM_CRM2_ESCR</div></td> 
     <td colspan='5' align='center'> 

      <!--css div popup start--> 
      <a class="popup_link" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.4')" > 
     pass</a> 

      <div id='div_pt1.4' class="popup_window"> 
       <div style='text-align: right; color:red;cursor:pointer'> 
        <a onfocus='this.blur();' onclick="document.getElementById('div_pt1.4').style.display = 'none' " > 
      [x]</a> 
       </div> 
       <pre> 

pt1.4: *** test_login_valid_user *** 
test login with a valid user - Passed 

*** Test view_all_records_report - CRM, CRM2, ESCR *** 

       </pre> 
      </div> 
      <!--css div popup end--> 

     </td> 
    </tr> 

    <tr id='pt1.5' class='hiddenRow'> 
     <td class='none'><div class='testcase'>test_000059_view_matches_report_CRM_CRM2_ESCR</div></td> 
     <td colspan='5' align='center'> 

      <!--css div popup start--> 
      <a class="popup_link" onfocus='this.blur();' href="javascript:showTestDetail('div_pt1.5')" > 
     pass</a> 

      <div id='div_pt1.5' class="popup_window"> 
       <div style='text-align: right; color:red;cursor:pointer'> 
        <a onfocus='this.blur();' onclick="document.getElementById('div_pt1.5').style.display = 'none' " > 
      [x]</a> 
       </div> 
       <pre> 

pt1.5: *** test_login_valid_user *** 
test login with a valid user - Passed 

*** Test view_all_records_report - CRM, CRM2, ESCR *** 

       </pre> 
      </div> 
      <!--css div popup end--> 

     </td> 
    </tr> 

可能ですか?

パスという言葉は改行されています。私はこれを列に、またはいくつかのスペースで分けることができればよいでしょう。

単語のパスは、HTMLのaタグ内にあります。次のコード行でこれが見つかります。私はそれを抽出したとき、私は別の列にいくつかの空白を置くか、でした?:

yield div.text.strip().encode('utf-8'), div.find_next("a").text.strip().encode('utf-8') 

それを書き出す私の電子メールメッセージのコードスニペットは、次のとおりです。レポートから、ステータスを抽出する

msg = MIMEText("\n ClearCore Automated GUI Project Test Report \n " + "\n" + 
       "".join([' - '.join(seq) for seq in extract_status_from_report_htmltestrunner()]) + "\n\n" + 
       '\n'.join([elem 
          for seq in extract_testcases_from_report_htmltestrunner() 
          for elem in seq]) + "\n" + 
       "\n Report location = : \\\storage-1\Testing\Selenium_Test_Report_Results\ClearCore\Selenium VM \n" + "\n") 

私のコード次のとおりです。

def extract_status_from_report_htmltestrunner(): 
    filename = (
    r"E:\test_runners 2 edit project\selenium_regression_test\TestReport\ClearCore_Automated_GUI_Regression_Project_TestReport.html") 
    html_report_part = open(filename, 'r') 
    soup = BeautifulSoup(html_report_part, "html.parser") 
    div_heading = soup.find('div', {'class': 'heading'}) 
    p_status = div_heading.find('strong', text='Status:').parent 
    p_status.find(text=True, recursive=False) 
    print p_status.text 
    return p_status.text 

おかげで、リアズ

答えて

0
from bs4 import BeautifulSoup 

soup = BeautifulSoup(text, 'lxml') 
trs = soup.find_all(class_='hiddenRow') 
for tr in trs: 
    row1 = tr.find('td').get_text() 
    row2 = tr.find('a').get_text(strip=True) 
    print('{:<55}{:>5}'.format(row1, row2)) 

out:

test_000001_login_valid_user       pass 
test_000002_select_a_project       pass 
test_000057_run_clean_and_match_process     pass 
test_000058_view_all_records_report_CRM_CRM2_ESCR  pass 
test_000059_view_matches_report_CRM_CRM2_ESCR   pass 
関連する問題