Browse Source

Merge branch 'master' of https://jygit.jydev.jianyu360.cn/Test/jianyu_auto_api

liumiaomiao 2 years ago
parent
commit
f4cdc93028

+ 1 - 1
.idea/example.iml

@@ -2,7 +2,7 @@
 <module type="PYTHON_MODULE" version="4">
   <component name="NewModuleRootManager">
     <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 3.8 (venv)" jdkType="Python SDK" />
+    <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
 </module>

+ 1 - 1
.idea/misc.xml

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (venv)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
 </project>

+ 0 - 4
.idea/vcs.xml

@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-<<<<<<< HEAD
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-=======
     <mapping directory="" vcs="Git" />
->>>>>>> a9e604d0c5e180d4ecd9234862a74b12c2317318
   </component>
 </project>

+ 6 - 5
cases/登录功能/搜索功能/buyersearch.py

@@ -16,12 +16,13 @@ class c5:
         STEP(1,'第一步调用函数')    #会出现在测试报告中
         apimgr.mgr_login()
         r = apimgr.buyersousuo("万达信息股份有限公司")
-        INFO(r.text)
-        # res =r.json()
-        # buyer_value = res['data']['list'][0]['buyer']
-        STEP(2,'第二步设置检查点')
+        response_data = json.loads(r.text)
+        error_code = response_data["error_code"]
+        STEP(2, '第二步设置检查点')
         # 设置检查点
-        # CHECK_POINT('检查搜索接口是否正常',res['data']['ckeys'] == 'PH计')
+        CHECK_POINT('检查搜索接口是否正常', error_code == 0)
     #清除方法
     def teardown(self):
         INFO('清除方法')
+
+    apimgr.mgr_logout()

+ 2 - 0
cases/登录功能/搜索功能/enterpriseSearch.py

@@ -31,3 +31,5 @@ class c3:
     #清除方法
     def teardown(self):
         INFO('清除方法')
+
+    apimgr.mgr_logout()

+ 2 - 2
cases/登录功能/搜索功能/search.py → cases/登录功能/搜索功能/purchasesearch.py

@@ -13,7 +13,7 @@ class c2:
         INFO('测试步骤')
         STEP(1,'第一步调用函数')    #会出现在测试报告中
         apimgr.mgr_login()
-        r = apimgr.search()
+        r = apimgr.purchasesearch()
         res = r.text
         keys_value = res.split('var keys = "', 1)[-1].split('"', 1)[0]
         STEP(2,'第二步设置检查点')
@@ -22,4 +22,4 @@ class c2:
     #清除方法
     def teardown(self):
         INFO('清除方法')
-        apimgr.mgr_logout(self.session)
+        apimgr.mgr_logout()

+ 2 - 0
cases/登录功能/搜索功能/supplySearch.py

@@ -24,3 +24,5 @@ class c4:
     #清除方法
     def teardown(self):
         INFO('清除方法')
+
+    apimgr.mgr_logout()

+ 2 - 2
lib/webapi.py

@@ -67,7 +67,7 @@ class APIMgr():
         # self.printResponse(res)
         # return res
 
-    def search(self, keywords="建筑", publishtime="fiveyear", selectType="content"):
+    def purchasesearch(self, keywords="建筑", publishtime="fiveyear", selectType="content"):
         #使用全局变量
         headers = GSTORE['headers']
         #保存session
@@ -131,7 +131,7 @@ class APIMgr():
             "pageSize": pageSize,
             "pageNum":pageNum
         }
-        response = requests.post(url=url, data=json.dumps(data), headers=self.headers)
+        response = requests.post(url=url, json=data, headers=self.headers)
         self.printResponse(response)
         return response
 

+ 0 - 434
log/report_20230706_152619.html

@@ -1,434 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:26:19</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:26:19</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.002 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>0</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/未登录功能/buyersearch.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/未登录功能/buyersearch.py</span>
-          </div>
-          <div class="case abort" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 ABORT</span>
-              <span class="casename">未登录采购单位搜索</span>
-              <span class="executetime">2023-07-06 15:26:19</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/未登录功能/buyersearch.py::c1</span>
-              <div class="test_steps" id="test_steps 未登录采购单位搜索">
-                <span class="label">测试步骤</span>
-                <div class="info error-info">'APIMgr' object has no attribute 's' 
-Traceback:
-  File &quot;cases/未登录功能/buyersearch.py&quot;, line 7, in teststeps
-    res=apimgr.notloggedin_buysearch('科技')
-  File &quot;/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py&quot;, line 187, in notloggedin_buysearch
-    response =self.s.post(f&quot;{cfg.target_host}/jyapi/jybx/buyer/eType/buyerList&quot;, headers=headers, json=data)
-AttributeError: 'APIMgr' object has no attribute 's'
-</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 447
log/report_20230706_152740.html

@@ -1,447 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:27:40</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:27:40</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.003 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>0</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/登录功能/订阅/push_list.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/登录功能/订阅/push_list.py</span>
-          </div>
-          <div class="case abort" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 ABORT</span>
-              <span class="casename">推送记录接口验证</span>
-              <span class="executetime">2023-07-06 15:27:40</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/登录功能/订阅/push_list.py::c1</span>
-              <div class="case_setup setup case_st_lable" id="case_setup setup 推送记录接口验证">
-                <span class="label">用例初始化</span>
-                <div class="info">初始化方法</div>
-              </div>
-              <div class="test_steps" id="test_steps 推送记录接口验证">
-                <span class="label">测试步骤</span>
-                <div class="info">测试步骤</div>
-                <div class="case_step">
-                  <span class="tag">步骤 #1</span>
-                  <span>第一步调用函数</span>
-                </div>
-                <div class="info error-info">'APIMgr' object has no attribute 's' 
-Traceback:
-  File &quot;cases/登录功能/订阅/push_list.py&quot;, line 13, in teststeps
-    r = apimgr.push_list()
-  File &quot;/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py&quot;, line 160, in push_list
-    response = self.s.post(f&quot;{cfg.target_host}/jyapi/jybx/subscribe/fType/list&quot;,headers=headers,json=
-AttributeError: 'APIMgr' object has no attribute 's'
-</div>
-              </div>
-              <div class="case_teardown teardown case_st_lable" id="case_teardown teardown 推送记录接口验证">
-                <span class="label">用例清除</span>
-                <div class="info">清除方法</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 430
log/report_20230706_152946.html

@@ -1,430 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:29:46</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:29:46</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.179 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/未登录功能/buyersearch.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/未登录功能/buyersearch.py</span>
-          </div>
-          <div class="case pass" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 PASS</span>
-              <span class="casename">未登录采购单位搜索</span>
-              <span class="executetime">2023-07-06 15:29:46</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/未登录功能/buyersearch.py::c1</span>
-              <div class="test_steps" id="test_steps 未登录采购单位搜索">
-                <span class="label">测试步骤</span>
-                <div class="checkpoint_pass">
-                  <span class="tag">检查点 PASS</span>
-                  <span>检查未登录采购单位搜索接口是否正常</span>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="none">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 445
log/report_20230706_153106.html

@@ -1,445 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:31:06</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:31:06</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.116 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>0</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/登录功能/订阅/push_list.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/登录功能/订阅/push_list.py</span>
-          </div>
-          <div class="case abort" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 ABORT</span>
-              <span class="casename">推送记录接口验证</span>
-              <span class="executetime">2023-07-06 15:31:06</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/登录功能/订阅/push_list.py::c1</span>
-              <div class="case_setup setup case_st_lable" id="case_setup setup 推送记录接口验证">
-                <span class="label">用例初始化</span>
-                <div class="info">初始化方法</div>
-              </div>
-              <div class="test_steps" id="test_steps 推送记录接口验证">
-                <span class="label">测试步骤</span>
-                <div class="info">测试步骤</div>
-                <div class="case_step">
-                  <span class="tag">步骤 #1</span>
-                  <span>第一步调用函数</span>
-                </div>
-                <div class="info error-info">'data' 
-Traceback:
-  File &quot;cases/登录功能/订阅/push_list.py&quot;, line 15, in teststeps
-    actural = res['data']['count']
-KeyError: 'data'
-</div>
-              </div>
-              <div class="case_teardown teardown case_st_lable" id="case_teardown teardown 推送记录接口验证">
-                <span class="label">用例清除</span>
-                <div class="info">清除方法</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 434
log/report_20230706_153139.html

@@ -1,434 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:31:39</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:31:39</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.003 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>0</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/未登录功能/buyersearch.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/未登录功能/buyersearch.py</span>
-          </div>
-          <div class="case abort" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 ABORT</span>
-              <span class="casename">未登录采购单位搜索</span>
-              <span class="executetime">2023-07-06 15:31:39</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/未登录功能/buyersearch.py::c1</span>
-              <div class="test_steps" id="test_steps 未登录采购单位搜索">
-                <span class="label">测试步骤</span>
-                <div class="info error-info">name 's' is not defined 
-Traceback:
-  File &quot;cases/未登录功能/buyersearch.py&quot;, line 7, in teststeps
-    res=apimgr.notloggedin_buysearch('科技')
-  File &quot;/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py&quot;, line 189, in notloggedin_buysearch
-    response =s.post(f&quot;{cfg.target_host}/jyapi/jybx/buyer/eType/buyerList&quot;, headers=headers, json=data)
-NameError: name 's' is not defined
-</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 445
log/report_20230706_153217.html

@@ -1,445 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:32:17</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:32:17</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.178 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>0</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/登录功能/订阅/push_list.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/登录功能/订阅/push_list.py</span>
-          </div>
-          <div class="case abort" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 ABORT</span>
-              <span class="casename">推送记录接口验证</span>
-              <span class="executetime">2023-07-06 15:32:17</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/登录功能/订阅/push_list.py::c1</span>
-              <div class="case_setup setup case_st_lable" id="case_setup setup 推送记录接口验证">
-                <span class="label">用例初始化</span>
-                <div class="info">初始化方法</div>
-              </div>
-              <div class="test_steps" id="test_steps 推送记录接口验证">
-                <span class="label">测试步骤</span>
-                <div class="info">测试步骤</div>
-                <div class="case_step">
-                  <span class="tag">步骤 #1</span>
-                  <span>第一步调用函数</span>
-                </div>
-                <div class="info error-info">'data' 
-Traceback:
-  File &quot;cases/登录功能/订阅/push_list.py&quot;, line 15, in teststeps
-    actural = res['data']['count']
-KeyError: 'data'
-</div>
-              </div>
-              <div class="case_teardown teardown case_st_lable" id="case_teardown teardown 推送记录接口验证">
-                <span class="label">用例清除</span>
-                <div class="info">清除方法</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 430
log/report_20230706_155630.html

@@ -1,430 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 15:56:30</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 15:56:30</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.570 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="">0</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_file" id="suite_file cases/未登录功能/bidsearch.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/未登录功能/bidsearch.py</span>
-          </div>
-          <div class="case pass" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 PASS</span>
-              <span class="casename">未登录招标搜索</span>
-              <span class="executetime">2023-07-06 15:56:30</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/未登录功能/bidsearch.py::c1</span>
-              <div class="test_steps" id="test_steps 未登录招标搜索">
-                <span class="label">测试步骤</span>
-                <div class="checkpoint_pass">
-                  <span class="tag">检查点 PASS</span>
-                  <span>检查未登录采购单位搜索接口是否正常</span>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="none">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 481
log/report_20230706_160520.html

@@ -1,481 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 16:05:20</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 16:05:20</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.280 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="color:red">1</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_dir" id="suite_dir cases/登录功能/">
-          <div>
-            <span class="label">进入目录</span>
-            <span>cases/登录功能/</span>
-          </div>
-          <div class="suite_setup setup" id="suite_setup setup cases/登录功能/">
-            <div class="folder_header">
-              <span class="label">套件初始化</span>
-              <span>cases/登录功能/</span>
-              <span class="executetime">2023-07-06 16:05:20</span>
-            </div>
-            <div class="folder_body">
-              <div class="info">用户登录</div>
-            </div>
-          </div>
-        </div>
-        <div class="suite_file" id="suite_file cases/登录功能/login.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/登录功能/login.py</span>
-          </div>
-          <div class="case pass" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 PASS</span>
-              <span class="casename">登录接口验证</span>
-              <span class="executetime">2023-07-06 16:05:20</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/登录功能/login.py::c1</span>
-              <div class="test_steps" id="test_steps 登录接口验证">
-                <span class="label">测试步骤</span>
-                <div class="info">测试步骤</div>
-                <div class="case_step">
-                  <span class="tag">步骤 #1</span>
-                  <span>第一步调用函数</span>
-                </div>
-                <div class="case_step">
-                  <span class="tag">步骤 #2</span>
-                  <span>第二步设置检查点</span>
-                </div>
-                <div class="checkpoint_pass">
-                  <span class="tag">检查点 PASS</span>
-                  <span>检查登录接口是否正常</span>
-                </div>
-              </div>
-              <div class="case_teardown teardown case_st_lable fail" id="case_teardown teardown 登录接口验证">
-                <span class="label">用例清除</span>
-                <div class="info">用户退出</div>
-                <div class="info error-info">case teardown fail | mgr_logout() missing 1 required positional argument: 'session' 
-Traceback:
-  File &quot;cases/登录功能/login.py&quot;, line 20, in teardown
-    apimgr.mgr_logout()
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
-</div>
-              </div>
-            </div>
-          </div>
-          <div class="suite_teardown teardown fail" id="suite_teardown teardown cases/登录功能/">
-            <div class="folder_header">
-              <span class="label">套件清除</span>
-              <span>cases/登录功能/</span>
-              <span class="executetime">2023-07-06 16:05:20</span>
-            </div>
-            <div class="folder_body">
-              <div class="info">用户退出</div>
-              <div class="info error-info">suite teardown fail | mgr_logout() missing 1 required positional argument: 'session' 
-Traceback:
-  File &quot;cases/登录功能/__st__.py&quot;, line 8, in suite_teardown
-    apimgr.mgr_logout()
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
-</div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 0 - 485
log/report_20230706_160543.html

@@ -1,485 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>测试报告</title>
-    <meta charset="UTF-8">
-    <style>body {    
-    font-family: consolas, Verdana, sans-serif;
-    font-size: .95em;
-    color: #696e71;
-    display: grid;
-    grid-template-columns: 1fr 5rem;
-}
-
-.main_section {   
-    width: 90%;
-    margin: 0 auto;
-}
-
-#float_menu{    
-    position:fixed;
-    top:0;
-    right:0;
-    text-align: center;
-}
-
-#float_menu .menu-item {       
-    cursor: pointer;
-    padding: .5em;
-    margin: .5em 0;
-    color: #c08580;
-    background-color: #f8f0ef;
-    font-size: 1.2em;
-}
-
-
-
-.result{  
-    display: flex;
-}
-  
-  
-.result_table{
-    border-collapse: collapse;
-    border: 1px solid #f0e0e5;
-    width: 30em;
-    text-align: center;
-    font-size: 1.0em;
-}
-      
-.result_table td{
-    border: 1px solid #f0e0e5;
-    padding: .3em;
-}
-  
-.result_barchart{  
-    width: 30em;
-    margin: 0 5em 0 5em;
-}
-  
-.barchar_item{
-    margin: 2.5rem 0;
-}
-  
-.barchart_barbox {
-    margin: 0.5em 0;
-    width: 100%;
-    background-color: #fff;
-    border: 1px solid #86c2dd;
-    border-radius: .2em;
-}
-  
-.barchart_bar {
-    text-align: right;
-    height: 1.2rem;
-}
-  
-  
-
-
-
-.h3_button {
-    margin: 1.5em;
-    cursor: pointer;
-    color: #03a9f4;
-}
-
-
-.info
-{
-    white-space:pre-wrap;
-    margin: .8em 1.5em;
-}
-
-
-.error-info
-{
-    color: #a64747
-}
-
-.suite_dir {
-    margin: 1em .2em;
-    padding: .3em;
-    /* background-color: #dfeff6; */
-    border: 1px solid #bcd8e4;
-}
-.suite_file {
-    margin: 1em .2em;
-    padding: .3em;
-    border: 1px solid #bcd8e4;
-}
-
-
-.case {
-    margin: 1em .2em;
-    /* padding: .3em; */
-    border: 1px solid #e7d4d4;
-}
-
-.case_class_path{
-    margin: 0em 1em; 
-}
-
-
-.folder_header { 
-    padding: .2em .7em;
-    background-color: #fffaf9;
-    cursor: pointer;
-}
-
-
-.setup{
-    margin: .2em;
-    /* padding: .3em; */
-    /* border: 1px solid #e7d4d4; */
-}
-.teardown{
-    margin: .2em;
-    /* padding: .3em;*/
-    /* border: 1px solid #e7d4d4; */
-}
-.test_steps{
-    margin: .2em;
-    padding: .3em;
-    /* border: 1px solid #e7d4d4; */
-}
-
-
-.label {
-    display: inline-block;
-    padding: .1em .5em;
-    font-size: .88em;
-    letter-spacing: 1px;
-    white-space: nowrap;
-    color: #0d6ebc;
-    border-radius: .2em;
-    min-width: 5em;    
-    margin-right: 2em;
-    font-family: consolas;
-}
-
-/* .suite_setup .label{
-    color: #219e26 ;
-}
-.suite_teardown .label{
-    color: #219e26;
-} */
-
-
-/* .case.pass   .casename{
-    color: #329132 ;
-} */
-.case.pass   .caselabel{
-    color: white;
-    background-color: #3b9e3f;
-}
-/* .case.fail   .casename{
-    color: #a64747;
-} */
-.case.fail   .caselabel{
-    color: white;
-    background-color: #a64747;
-}
-/* .case.abort   .casename{
-    color: #953ab7;
-} */
-.case.abort   .caselabel{
-    color: white;
-    background-color: #9c27b0;
-}
-
-
-
-.case_step  {
-    margin: .8em;
-}
-.checkpoint_pass {
-    margin: .8em;
-}
-.checkpoint_fail {
-    margin: .8em;
-}
-
-.case_step  .tag{
-    color: #2196f3;;
-    margin: .3em 1em .3em 0;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.checkpoint_pass .tag{
-    color: #009806;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-.checkpoint_fail .tag{
-    color: #9c2020;
-    margin:.3em 1em .3em .5em;
-    padding: .1em .3em;
-    font-size: .92em;
-}
-
-.screenshot {
-    border: 1px solid #86c2dd;
-}
-
-.executetime {
-    float: right;
-}</style>
-    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
-var ERROR_INFOS = [];  // 错误信息列表
-var current_error_idx = -1;
-
-// 页面加载后执行的函数
-window.addEventListener("load", function(){
-    // 所有 .folder_header 添加点击事件处理
-    let folderHeaderEles = document.querySelectorAll(".folder_header");
-    folderHeaderEles.forEach(function(ele) {
-        ele.addEventListener("click", function(event) {
-        let fb = event.target.closest('.folder_header').nextElementSibling;
-        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
-        });
-    });
-
-    // 找到所有的错误信息对象
-    ERROR_INFOS = document.querySelectorAll(".error-info");
-});
-
-
-
-function toggle_folder_all_cases(){
-    let eles = document.querySelectorAll(".folder_body");
-    
-    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
-    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"
-
-    for (const ele of eles){
-        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
-    }
-    
-}
-
-
-
-function previous_error(){
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx -= 1; 
-    if (current_error_idx<0)
-        current_error_idx = 0
-
-    
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-
-    
-}
-
-
-function next_error(){
-    
-    // 查找错误必须是详细模式
-    if (FOLDER_ALL_CASES)
-        toggle_folder_all_cases()
-
-    current_error_idx += 1;
-    if (current_error_idx > ERROR_INFOS.length-1)
-        current_error_idx = ERROR_INFOS.length-1
-
-    let error = ERROR_INFOS[current_error_idx];
-
-    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
-    
-}</script>
-  </head>
-  <body>
-    <div class="main_section">
-      <h1 style="font-family: auto">测试报告</h1>
-      <h3>统计结果</h3>
-      <div class="result">
-        <table class="result_table">
-          <tbody>
-            <tr>
-              <td>hytest 版本</td>
-              <td>0.8.11</td>
-            </tr>
-            <tr>
-              <td>开始时间</td>
-              <td>2023/07/06 16:05:43</td>
-            </tr>
-            <tr>
-              <td>结束时间</td>
-              <td>2023/07/06 16:05:44</td>
-            </tr>
-            <tr>
-              <td>耗时</td>
-              <td>0.307 秒</td>
-            </tr>
-            <tr>
-              <td>预备执行用例数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>实际执用例行数量</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>通过</td>
-              <td>1</td>
-            </tr>
-            <tr>
-              <td>失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>异常</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>阻塞</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>套件清除  失败</td>
-              <td style="color:red">1</td>
-            </tr>
-            <tr>
-              <td>用例初始化失败</td>
-              <td style="">0</td>
-            </tr>
-            <tr>
-              <td>用例清除  失败</td>
-              <td style="color:red">1</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="result_barchart">
-          <div class="barchar_item">
-            <span>用例通过 100% : 1 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 100.0%; background-color: #04AA6D;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例失败 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例异常 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
-            </div>
-          </div>
-          <div class="barchar_item">
-            <span>用例阻塞 0% : 0 个</span>
-            <div class="barchart_barbox">
-              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="margin-top:2em">
-        <h3 style="display:inline">执行日志</h3>
-      </div>
-      <div class="exec_log">
-        <div class="suite_dir" id="suite_dir cases/登录功能/">
-          <div>
-            <span class="label">进入目录</span>
-            <span>cases/登录功能/</span>
-          </div>
-          <div class="suite_setup setup" id="suite_setup setup cases/登录功能/">
-            <div class="folder_header">
-              <span class="label">套件初始化</span>
-              <span>cases/登录功能/</span>
-              <span class="executetime">2023-07-06 16:05:43</span>
-            </div>
-            <div class="folder_body">
-              <div class="info">用户登录</div>
-            </div>
-          </div>
-        </div>
-        <div class="suite_file" id="suite_file cases/登录功能/login.py">
-          <div>
-            <span class="label">进入文件</span>
-            <span>cases/登录功能/login.py</span>
-          </div>
-          <div class="case pass" id="case_00000001">
-            <div class="folder_header">
-              <span class="label caselabel">用例 PASS</span>
-              <span class="casename">登录接口验证</span>
-              <span class="executetime">2023-07-06 16:05:44</span>
-            </div>
-            <div class="folder_body">
-              <span class="case_class_path">cases/登录功能/login.py::c1</span>
-              <div class="test_steps" id="test_steps 登录接口验证">
-                <span class="label">测试步骤</span>
-                <div class="info">测试步骤</div>
-                <div class="case_step">
-                  <span class="tag">步骤 #1</span>
-                  <span>第一步调用函数</span>
-                </div>
-                <div class="case_step">
-                  <span class="tag">步骤 #2</span>
-                  <span>第二步设置检查点</span>
-                </div>
-                <div class="checkpoint_pass">
-                  <span class="tag">检查点 PASS</span>
-                  <span>检查登录接口是否正常</span>
-                </div>
-              </div>
-              <div class="case_teardown teardown case_st_lable fail" id="case_teardown teardown 登录接口验证">
-                <span class="label">用例清除</span>
-                <div class="info">用户退出</div>
-                <div class="info error-info">case teardown fail | name 'session' is not defined 
-Traceback:
-  File &quot;cases/登录功能/login.py&quot;, line 20, in teardown
-    apimgr.mgr_logout()
-  File &quot;/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py&quot;, line 82, in mgr_logout
-    session.post(url=url, headers=headers)
-NameError: name 'session' is not defined
-</div>
-              </div>
-            </div>
-          </div>
-          <div class="suite_teardown teardown fail" id="suite_teardown teardown cases/登录功能/">
-            <div class="folder_header">
-              <span class="label">套件清除</span>
-              <span>cases/登录功能/</span>
-              <span class="executetime">2023-07-06 16:05:44</span>
-            </div>
-            <div class="folder_body">
-              <div class="info">用户退出</div>
-              <div class="info error-info">suite teardown fail | name 'session' is not defined 
-Traceback:
-  File &quot;cases/登录功能/__st__.py&quot;, line 8, in suite_teardown
-    apimgr.mgr_logout()
-  File &quot;/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py&quot;, line 82, in mgr_logout
-    session.post(url=url, headers=headers)
-NameError: name 'session' is not defined
-</div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div id="float_menu">
-      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
-      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
-      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
-      <div class="error_jumper" display="block">
-        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
-        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
-      </div>
-    </div>
-  </body>
-</html>

+ 165 - 33
log/testresult.log

@@ -3,77 +3,78 @@
 ===   [ 收集测试用例 ]  === 
 
 
-== cases/未登录功能/buyersearch.py 
+== cases\未登录功能\bidsearch.py 
 
 
-** no cases in this file , skip it.
+== cases\未登录功能\buyersearch.py 
 
-== cases/未登录功能/bidsearch.py 
 
+== cases\登录功能\__st__.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/__st__.py 
+== cases\登录功能\login.py 
 
 
-== cases/登录功能/login.py 
+== cases\登录功能\搜索功能\buyersearch.py 
 
 
-== cases/登录功能/搜索功能/budenglusu.py 
+== cases\登录功能\搜索功能\enterpriseSearch.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\搜索功能\purchasesearch.py 
 
-== cases/登录功能/搜索功能/buyersearch.py 
 
+== cases\登录功能\搜索功能\supplySearch.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/budenglubuyer.py 
+== cases\登录功能\消息中心\messagelist.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\订阅\push_list.py 
 
-== cases/登录功能/搜索功能/search.py 
 
 
-** no cases in this file , skip it.
+===   [ 执行测试用例 ]  === 
 
-== cases/登录功能/搜索功能/enterpriseSearch.py 
+预备执行用例数量 : 9
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/supplySearch.py 
+  ========= 测试开始 : 20230706_192307 =========
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/订阅/push_list.py 
+>>> cases\未登录功能\bidsearch.py
 
+* 未登录招标搜索  -  2023-07-06 19:23:07
 
-** no cases in this file , skip it.
+  [ case execution steps ]
 
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
-===   [ 执行测试用例 ]  === 
+  PASS 
 
-预备执行用例数量 : 1
 
+>>> cases\未登录功能\buyersearch.py
 
+* 未登录采购单位搜索  -  2023-07-06 19:23:07
 
-  ========= 测试开始 : 20230706_160626 =========
+  [ case execution steps ]
+
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
+  PASS 
 
 
->>> cases/登录功能/
+>>> cases\登录功能\
 
-[ suite setup ] cases/登录功能/
+[ suite setup ] cases\登录功能\
 用户登录
 
 
->>> cases/登录功能/login.py
+>>> cases\登录功能\login.py
 
-* 登录接口验证  -  2023-07-06 16:06:26
+* 登录接口验证  -  2023-07-06 19:23:08
 
   [ case execution steps ]
 测试步骤
@@ -91,21 +92,152 @@
 [ case teardown ] 登录接口验证
 用户退出
 
-[ suite teardown ] cases/登录功能/
+
+>>> cases\登录功能\搜索功能\buyersearch.py
+
+* 采购单位搜索  -  2023-07-06 19:23:08
+
+[ case setup ] 采购单位搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 采购单位搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\enterpriseSearch.py
+
+* 企业搜索  -  2023-07-06 19:23:08
+
+[ case setup ] 企业搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查登录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 企业搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\purchasesearch.py
+
+* 招标搜索接口  -  2023-07-06 19:23:08
+
+[ case setup ] 招标搜索接口
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 招标搜索接口
+清除方法
+
+
+>>> cases\登录功能\搜索功能\supplySearch.py
+
+* 供应搜索  -  2023-07-06 19:23:10
+
+[ case setup ] 供应搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 供应搜索
+清除方法
+
+
+>>> cases\登录功能\消息中心\messagelist.py
+
+* 消息中心列表  -  2023-07-06 19:23:10
+
+  [ case execution steps ]
+
+** 检查点 **  检查消息中心列表数据是否正常 ---->  通过
+
+  PASS 
+
+
+>>> cases\登录功能\订阅\push_list.py
+
+* 推送记录接口验证  -  2023-07-06 19:23:10
+
+[ case setup ] 推送记录接口验证
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查推动记录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 推送记录接口验证
+清除方法
+
+[ suite teardown ] cases\登录功能\
 用户退出
 
 
-  ========= 测试结束 : 20230706_160627 =========
+  ========= 测试结束 : 20230706_192310 =========
 
 
-  耗时    : 0.373 秒
+  耗时    : 3.602
 
 
-  预备执行用例数量 : 1
+  预备执行用例数量 : 9
 
-  实际执行用例数量 : 1
+  实际执行用例数量 : 9
 
-  通过 : 1
+  通过 : 9
 
   失败 : 0
 

+ 166 - 50
log/testresult.log.1

@@ -3,77 +3,78 @@
 ===   [ 收集测试用例 ]  === 
 
 
-== cases/未登录功能/buyersearch.py 
+== cases\未登录功能\bidsearch.py 
 
 
-** no cases in this file , skip it.
+== cases\未登录功能\buyersearch.py 
 
-== cases/未登录功能/bidsearch.py 
 
+== cases\登录功能\__st__.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/__st__.py 
+== cases\登录功能\login.py 
 
 
-== cases/登录功能/login.py 
+== cases\登录功能\搜索功能\buyersearch.py 
 
 
-== cases/登录功能/搜索功能/budenglusu.py 
+== cases\登录功能\搜索功能\enterpriseSearch.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\搜索功能\search.py 
 
-== cases/登录功能/搜索功能/buyersearch.py 
 
+== cases\登录功能\搜索功能\supplySearch.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/budenglubuyer.py 
+== cases\登录功能\消息中心\messagelist.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\订阅\push_list.py 
 
-== cases/登录功能/搜索功能/search.py 
 
 
-** no cases in this file , skip it.
+===   [ 执行测试用例 ]  === 
 
-== cases/登录功能/搜索功能/enterpriseSearch.py 
+预备执行用例数量 : 9
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/supplySearch.py 
+  ========= 测试开始 : 20230706_191817 =========
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/订阅/push_list.py 
+>>> cases\未登录功能\bidsearch.py
 
+* 未登录招标搜索  -  2023-07-06 19:18:17
 
-** no cases in this file , skip it.
+  [ case execution steps ]
 
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
-===   [ 执行测试用例 ]  === 
+  PASS 
 
-预备执行用例数量 : 1
 
+>>> cases\未登录功能\buyersearch.py
 
+* 未登录采购单位搜索  -  2023-07-06 19:18:17
 
-  ========= 测试开始 : 20230706_160543 =========
+  [ case execution steps ]
+
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
+  PASS 
 
 
->>> cases/登录功能/
+>>> cases\登录功能\
 
-[ suite setup ] cases/登录功能/
+[ suite setup ] cases\登录功能\
 用户登录
 
 
->>> cases/登录功能/login.py
+>>> cases\登录功能\login.py
 
-* 登录接口验证  -  2023-07-06 16:05:44
+* 登录接口验证  -  2023-07-06 19:18:18
 
   [ case execution steps ]
 测试步骤
@@ -90,38 +91,153 @@
 
 [ case teardown ] 登录接口验证
 用户退出
-case teardown fail | name 'session' is not defined 
-Traceback:
-  File "cases/登录功能/login.py", line 20, in teardown
-    apimgr.mgr_logout()
-  File "/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py", line 82, in mgr_logout
-    session.post(url=url, headers=headers)
-NameError: name 'session' is not defined
 
 
-[ suite teardown ] cases/登录功能/
-用户退出
-suite teardown fail | name 'session' is not defined 
-Traceback:
-  File "cases/登录功能/__st__.py", line 8, in suite_teardown
-    apimgr.mgr_logout()
-  File "/Users/miaobao/Documents/work/autoproject/jianyu_auto_api/lib/webapi.py", line 82, in mgr_logout
-    session.post(url=url, headers=headers)
-NameError: name 'session' is not defined
+>>> cases\登录功能\搜索功能\buyersearch.py
+
+* 采购单位搜索  -  2023-07-06 19:18:18
+
+[ case setup ] 采购单位搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 采购单位搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\enterpriseSearch.py
+
+* 企业搜索  -  2023-07-06 19:18:18
+
+[ case setup ] 企业搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查登录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 企业搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\search.py
+
+* 招标搜索接口  -  2023-07-06 19:18:19
+
+[ case setup ] 招标搜索接口
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
 
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 招标搜索接口
+清除方法
+
+
+>>> cases\登录功能\搜索功能\supplySearch.py
+
+* 供应搜索  -  2023-07-06 19:18:20
+
+[ case setup ] 供应搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 供应搜索
+清除方法
+
+
+>>> cases\登录功能\消息中心\messagelist.py
+
+* 消息中心列表  -  2023-07-06 19:18:20
+
+  [ case execution steps ]
+
+** 检查点 **  检查消息中心列表数据是否正常 ---->  通过
+
+  PASS 
+
+
+>>> cases\登录功能\订阅\push_list.py
+
+* 推送记录接口验证  -  2023-07-06 19:18:20
+
+[ case setup ] 推送记录接口验证
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查推动记录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 推送记录接口验证
+清除方法
+
+[ suite teardown ] cases\登录功能\
+用户退出
 
 
-  ========= 测试结束 : 20230706_160544 =========
+  ========= 测试结束 : 20230706_191821 =========
 
 
-  耗时    : 0.307 秒
+  耗时    : 3.921
 
 
-  预备执行用例数量 : 1
+  预备执行用例数量 : 9
 
-  实际执行用例数量 : 1
+  实际执行用例数量 : 9
 
-  通过 : 1
+  通过 : 9
 
   失败 : 0
 
@@ -129,8 +245,8 @@ NameError: name 'session' is not defined
 
   套件初始化失败 : 0
 
-  套件清除  失败 : 1
+  套件清除  失败 : 0
 
   用例初始化失败 : 0
 
-  用例清除  失败 : 1
+  用例清除  失败 : 0

+ 167 - 46
log/testresult.log.2

@@ -3,77 +3,78 @@
 ===   [ 收集测试用例 ]  === 
 
 
-== cases/未登录功能/buyersearch.py 
+== cases\未登录功能\bidsearch.py 
 
 
-** no cases in this file , skip it.
+== cases\未登录功能\buyersearch.py 
 
-== cases/未登录功能/bidsearch.py 
 
+== cases\登录功能\__st__.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/__st__.py 
+== cases\登录功能\login.py 
 
 
-== cases/登录功能/login.py 
+== cases\登录功能\搜索功能\buyersearch.py 
 
 
-== cases/登录功能/搜索功能/budenglusu.py 
+== cases\登录功能\搜索功能\enterpriseSearch.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\搜索功能\search.py 
 
-== cases/登录功能/搜索功能/buyersearch.py 
 
+== cases\登录功能\搜索功能\supplySearch.py 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/budenglubuyer.py 
+== cases\登录功能\消息中心\messagelist.py 
 
 
-** no cases in this file , skip it.
+== cases\登录功能\订阅\push_list.py 
 
-== cases/登录功能/搜索功能/search.py 
 
 
-** no cases in this file , skip it.
+===   [ 执行测试用例 ]  === 
 
-== cases/登录功能/搜索功能/enterpriseSearch.py 
+预备执行用例数量 : 9
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/搜索功能/supplySearch.py 
+  ========= 测试开始 : 20230706_191752 =========
 
 
-** no cases in this file , skip it.
 
-== cases/登录功能/订阅/push_list.py 
+>>> cases\未登录功能\bidsearch.py
 
+* 未登录招标搜索  -  2023-07-06 19:17:52
 
-** no cases in this file , skip it.
+  [ case execution steps ]
 
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
-===   [ 执行测试用例 ]  === 
+  PASS 
 
-预备执行用例数量 : 1
 
+>>> cases\未登录功能\buyersearch.py
 
+* 未登录采购单位搜索  -  2023-07-06 19:17:52
 
-  ========= 测试开始 : 20230706_160520 =========
+  [ case execution steps ]
+
+** 检查点 **  检查未登录采购单位搜索接口是否正常 ---->  通过
 
+  PASS 
 
 
->>> cases/登录功能/
+>>> cases\登录功能\
 
-[ suite setup ] cases/登录功能/
+[ suite setup ] cases\登录功能\
 用户登录
 
 
->>> cases/登录功能/login.py
+>>> cases\登录功能\login.py
 
-* 登录接口验证  -  2023-07-06 16:05:20
+* 登录接口验证  -  2023-07-06 19:17:52
 
   [ case execution steps ]
 测试步骤
@@ -90,34 +91,154 @@
 
 [ case teardown ] 登录接口验证
 用户退出
-case teardown fail | mgr_logout() missing 1 required positional argument: 'session' 
-Traceback:
-  File "cases/登录功能/login.py", line 20, in teardown
-    apimgr.mgr_logout()
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
 
 
-[ suite teardown ] cases/登录功能/
-用户退出
-suite teardown fail | mgr_logout() missing 1 required positional argument: 'session' 
-Traceback:
-  File "cases/登录功能/__st__.py", line 8, in suite_teardown
-    apimgr.mgr_logout()
-TypeError: mgr_logout() missing 1 required positional argument: 'session'
+>>> cases\登录功能\搜索功能\buyersearch.py
+
+* 采购单位搜索  -  2023-07-06 19:17:53
+
+[ case setup ] 采购单位搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+{"error_code":0,"error_msg":"","data":{"count":3,"list":[{"buyer":"万达信息股份有限公司","province":"上海","city":"上海市","buyerClass":"信息技术"},{"buyer":"康健街道(本部)万达信息股份有限公司","buyerClass":"信息技术"},{"buyer":"湖南街道(本部)万达信息股份有限公司","buyerClass":"信息技术"}]}}
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 采购单位搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\enterpriseSearch.py
+
+* 企业搜索  -  2023-07-06 19:17:53
+
+[ case setup ] 企业搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查登录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 企业搜索
+清除方法
+
+
+>>> cases\登录功能\搜索功能\search.py
+
+* 招标搜索接口  -  2023-07-06 19:17:53
+
+[ case setup ] 招标搜索接口
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
 
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 招标搜索接口
+清除方法
+
+
+>>> cases\登录功能\搜索功能\supplySearch.py
+
+* 供应搜索  -  2023-07-06 19:17:55
+
+[ case setup ] 供应搜索
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查搜索接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 供应搜索
+清除方法
+
+
+>>> cases\登录功能\消息中心\messagelist.py
+
+* 消息中心列表  -  2023-07-06 19:17:55
+
+  [ case execution steps ]
+
+** 检查点 **  检查消息中心列表数据是否正常 ---->  通过
+
+  PASS 
+
+
+>>> cases\登录功能\订阅\push_list.py
+
+* 推送记录接口验证  -  2023-07-06 19:17:55
+
+[ case setup ] 推送记录接口验证
+初始化方法
+
+  [ case execution steps ]
+测试步骤
+
+-- 第 1 步 -- 第一步调用函数 
+
+
+-- 第 2 步 -- 第二步设置检查点 
+
+
+** 检查点 **  检查推动记录接口是否正常 ---->  通过
+
+  PASS 
+
+[ case teardown ] 推送记录接口验证
+清除方法
+
+[ suite teardown ] cases\登录功能\
+用户退出
 
 
-  ========= 测试结束 : 20230706_160520 =========
+  ========= 测试结束 : 20230706_191755 =========
 
 
-  耗时    : 0.280 秒
+  耗时    : 3.431
 
 
-  预备执行用例数量 : 1
+  预备执行用例数量 : 9
 
-  实际执行用例数量 : 1
+  实际执行用例数量 : 9
 
-  通过 : 1
+  通过 : 9
 
   失败 : 0
 
@@ -125,8 +246,8 @@ TypeError: mgr_logout() missing 1 required positional argument: 'session'
 
   套件初始化失败 : 0
 
-  套件清除  失败 : 1
+  套件清除  失败 : 0
 
   用例初始化失败 : 0
 
-  用例清除  失败 : 1
+  用例清除  失败 : 0