Kaynağa Gözat

1、修正:GLOBAL::g_stSATConfig.szCaseResultDir
2、加强SATExecutor每一步的日志打印,便于梳理流程、问题。

scbc.sat2 5 yıl önce
ebeveyn
işleme
4bfc9fa49f

+ 5 - 6
SATService/SATService/Global.cpp

@@ -223,13 +223,12 @@ namespace GLOBAL
 
 		// 读取其他目录的配置文件;sat_result_dir
 		_stprintf_s(szIniPath, _T("%s%s"), g_szPython27Dir, "Lib\\site-packages\\ssat_sdk\\config\\resource_run.cfg");
-		GetPrivateProfileString(_T("COMM"), _T("sat_result_dir"), _T(""), g_stSATConfig.szDetailXmlDir, MAX_PATH, szIniPath);
+		GetPrivateProfileString(_T("COMM"), _T("sat_result_dir"), _T(""), g_stSATConfig.szCaseResultDir, MAX_PATH, szIniPath);
 		// 将反斜转正斜;
-		std::string dir = Replace(g_stSATConfig.szDetailXmlDir, "\\", "/");
-		_stprintf_s(g_stSATConfig.szDetailXmlDir, dir.c_str());
-		if (g_stSATConfig.szDetailXmlDir[_tcslen(g_stSATConfig.szDetailXmlDir) - 1] != '\\')
-			_tcscat_s(g_stSATConfig.szDetailXmlDir, MAX_PATH, "\\");
-		_tcscat_s(g_stSATConfig.szDetailXmlDir, MAX_PATH, "detail\\");
+		std::string dir = Replace(g_stSATConfig.szCaseResultDir, "\\", "/");
+		_stprintf_s(g_stSATConfig.szCaseResultDir, dir.c_str());
+		if (g_stSATConfig.szCaseResultDir[_tcslen(g_stSATConfig.szCaseResultDir) - 1] != '\\')
+			_tcscat_s(g_stSATConfig.szCaseResultDir, MAX_PATH, "\\");
 
 		return 0;
 	}

+ 1 - 1
SATService/SATService/Global.h

@@ -59,7 +59,7 @@ namespace GLOBAL
 		// 脚本超时值设置;
 		DWORD dwScriptTimeout;
 		// xml目录;
-		TCHAR szDetailXmlDir[MAX_PATH];
+		TCHAR szCaseResultDir[MAX_PATH];
 		// 这个可以忽略不要;
 		typedef struct  __ST_LD__
 		{

+ 36 - 16
SATService/SATService/SATExecutor.cpp

@@ -234,17 +234,11 @@ bool CSATExecutor::Login(std::string user, std::string password, std::string act
 	m_stLoginReq.strCPU = "";
 
 	if ( ::Login(url, m_stLoginReq, m_stLoginResp) ) {
-#ifdef _DEBUG
-	OutputDebugString("登录成功\n");
-#endif
 		GLOBAL::WriteTextLog("登录成功");
 		m_bLogin = TRUE;
 		return true;
 	}
 
-#ifdef _DEBUG
-	OutputDebugString("登录失败\n");
-#endif
 	GLOBAL::WriteTextLog("登录失败");
 
 	return false;
@@ -280,6 +274,8 @@ bool CSATExecutor::UpdateDevice()
 	{
 		return false;
 	}
+
+	GLOBAL::WriteTextLog("更新设备信息成功");
 	
 	return true;
 }
@@ -318,12 +314,11 @@ bool CSATExecutor::NotifyTaskStart(SATHTTP::STTask* pTask)
 	{
 		// 此处可能需要设置设备为忙碌状态;
 		// SetDeviceStatus(BUSY);
+		GLOBAL::WriteTextLog("更新任务状态成功:%s", pTask->Job.strUniqueId.c_str());
 		return true;
 	}
 
-#ifdef _DEBUG
-	OutputDebugString("通知SAT失败\n");
-#endif
+	GLOBAL::WriteTextLog("更新任务状态失败:%s", pTask->Job.strUniqueId.c_str());
 
 	return false;
 }
@@ -359,9 +354,12 @@ bool CSATExecutor::UploadCaseImg(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase,
 	// 上传用例图片;
 	if ( SaveResultImg(url, stSaveImgReq, stSaveImgResp) )
 	{
+		GLOBAL::WriteTextLog("上传图片成功:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), img.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog("上传图片失败:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), img.c_str());
+
 	return false;
 }
 
@@ -387,9 +385,12 @@ bool CSATExecutor::UploadCaseLog(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase)
 	stSaveLogReq.strUploads = pCase->_strCaseLog;
 	if ( SaveCaseOrTaskLog(url, stSaveLogReq, stSaveLogResp) )
 	{
+		GLOBAL::WriteTextLog("上传日志成功:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), pCase->_strCaseLog.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog("上传日志失败:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), pCase->_strCaseLog.c_str());
+
 	return false;
 }
 
@@ -471,11 +472,13 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 
 	if ( SetResultList(url, stJobProcessReq, stJobProcessResp) )
 	{
+		GLOBAL::WriteTextLog("上传【用例测试项】结果完成【成功】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
+
 		// 再上传图片;
 		std::string img;
 		for (std::vector<std::string>::iterator it = caseItem.imgs.begin(); it != caseItem.imgs.end(); it++ )
 		{
-			img = "D:/SAT/results/";
+			img = GLOBAL::g_stSATConfig.szCaseResultDir;
 			img.append(it->substr(3));
 			UploadCaseImg(pTask, pCase, img);
 		}
@@ -483,6 +486,8 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 		return true;
 	}
 
+	GLOBAL::WriteTextLog("上传【用例测试项】结果完成【失败】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
+
 	return false;
 }
 
@@ -498,7 +503,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	// 上报用例结果:0表示脚本成功执行,	1表示脚本出错或超时;
 	if ( pCase->_nExecutionState == 2 )
 		stJobProcessReq.strResultState = "0";	// 脚本未执行完成;
-	else if ( pCase->_nExecutionState == 1 )	
+	else //if ( pCase->_nExecutionState == 1 )	
 		stJobProcessReq.strResultState = "1";	// 脚本执行中,认为fail;
 	
 	stJobProcessReq.strCaseScene = "";
@@ -557,22 +562,27 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 
 	if ( SetResultList(url, stJobProcessReq, stJobProcessResp) )
 	{
+		GLOBAL::WriteTextLog("上传用例结果完成【失败】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog("上传用例结果完成【失败】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
+
 	return false;
 }
 
 bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase)
 {
 	// 获取xml文件内容;
-	std::string xmlpath = GLOBAL::g_stSATConfig.szDetailXmlDir;
+	std::string xmlpath = GLOBAL::g_stSATConfig.szCaseResultDir;
+	xmlpath.append("detail\\");
 	xmlpath.append(pCase->_strFileName);
 	xmlpath.append("_result.xml");
 	std::vector<STCaseItem> vtCaseItem;
 	GetCaseXMLResult(xmlpath, vtCaseItem);
-	//if ( vtCaseItem.size() == 0 )
-	//	return false;
+	// 如果测试项空,任务失败;
+	if ( vtCaseItem.size() == 0 )
+		pCase->_nExecutionState = 4;
 	
 	int nIndex = 1;
 	TCHAR szValue[MAX_PATH] = {0};
@@ -598,7 +608,8 @@ bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	if ( pCase->_pExcutor )
 		delete pCase->_pExcutor;
 	pCase->_pExcutor = NULL;
-	GLOBAL::WriteTextLog(_T("执行器对象删除成功,脚本用例名为=%s"), pCase->strCaseName.c_str());
+
+	GLOBAL::WriteTextLog(_T("用例已完成,执行器对象删除成功,脚本用例名为=%s"), pCase->strCaseName.c_str());
 
 	return true;
 }
@@ -625,9 +636,12 @@ bool CSATExecutor::UploadTaskLog(SATHTTP::STTask* pTask)
 	stSaveLogReq.strUploads = "D:\\sat\\log.txt";//pTask->_strTaskLog;
 	if ( SaveCaseOrTaskLog(url, stSaveLogReq, stSaveLogResp) )
 	{
+		GLOBAL::WriteTextLog(_T("任务已完成,上传任务日志【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog(_T("任务已完成,上传任务日志【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
+
 	return false;
 }
 
@@ -697,9 +711,12 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 
 	if ( SetResultList(url, stJobProcessReq, stJobProcessResp) )
 	{
+		GLOBAL::WriteTextLog(_T("上报任务开始【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog(_T("上报任务开始【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
+
 	return false;
 }
 
@@ -712,7 +729,7 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	SATHTTP::STJobProcessReq stJobProcessReq;
 	SATHTTP::STJobProcessResp stJobProcessResp;
 
-	// 需要处理###
+	// 需要处理(只要有用例失败,任务就失败)
 	stJobProcessReq.strResultState = "0";	// 脚本执行中,认为fail;
 
 	stJobProcessReq.strCaseScene = "";
@@ -769,9 +786,12 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 
 	if ( SetResultList(url, stJobProcessReq, stJobProcessResp) )
 	{
+		GLOBAL::WriteTextLog(_T("上报任务结束【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
 		return true;
 	}
 
+	GLOBAL::WriteTextLog(_T("上报任务结束【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
+
 	return false;
 }