Beispiel #1
0
def _run_test_thread(worker_id, ctrl_msg_queue, testcase, testreport, resmgr):
    '''执行测试用例的线程
    
    :param worker_id: 工作者ID
    :type worker_id: string
    :param ctrl_msg_queue: 控制进程的消息队列
    :type ctrl_msg_queue: multiprocessing.Queue
    :param testcase: 测试用例
    :type testcase: TestCase
    :param testreport: 测试报告
    :type testreport: ITestReport
    :param resmgr: 资源管理器
    :type resmgr: TestResourceManager
    '''
    try:
        runnner = getattr(testcase, 'case_runner', TestCaseRunner())
        testcase.test_resmgr = resmgr
        result = runnner.run(testcase, testreport.get_testresult_factory())
        if isinstance(result, TestResultCollection):
            _log_collection_result(testreport, result)
        else:
            testreport.log_test_result(result.testcase, result)

        ctrl_msg_queue.put((EnumProcessMsgType.Worker_Idle, worker_id,
                            serialization.dumps(testcase), result.passed))
    except:
        ctrl_msg_queue.put((EnumProcessMsgType.Worker_Error, worker_id,
                            traceback.format_exc()))
Beispiel #2
0
 def test_normal_serialization(self):
     from tests.sampletest.hellotest import HelloTest
     hello = HelloTest()
     data = serialization.dumps(hello)
     deserialized_case = serialization.loads(data)
     self.assertEqual(type(deserialized_case), HelloTest)
     for attr in ["owner", "timeout", "priority", "status", "tags", "test_doc"]:
         self.assertEqual(getattr(deserialized_case, attr), getattr(hello, attr))
Beispiel #3
0
 def run_testcase(self, testcase ):
     '''分配一个测试用例
     
     :param testcase: 要执行的测试用例
     :type testcase: TestCase
     '''
     self.send_message((EnumProcessMsgType.Worker_RunTest, serialization.dumps(testcase)))
     self._testcase = testcase
Beispiel #4
0
 def run_testcase(self, testcase):
     '''分配一个测试用例
     
     :param testcase: 要执行的测试用例
     :type testcase: TestCase
     '''
     self.send_message(
         (EnumProcessMsgType.Worker_RunTest, serialization.dumps(testcase)))
     self._testcase = testcase
Beispiel #5
0
 def test_serialize_testsuite(self):
     from tests.sampletest.hellotest import HelloTest, TimeoutTest
     foo_test = datadrive.load_datadrive_tests(FooTest, 1)[0]
     testsuite = SeqTestSuite([HelloTest(), TimeoutTest(), foo_test])
     data = serialization.dumps(testsuite)
     deserialized_testsuite = serialization.loads(data)
     self.assertEqual(len(deserialized_testsuite), len(testsuite))
     for deserialized_test, test in zip(deserialized_testsuite, testsuite):
         self.assertEqual(type(deserialized_test), type(test))
         for attr in ["owner", "timeout", "priority", "status", "tags", "test_doc"]:
             self.assertEqual(getattr(deserialized_test, attr), getattr(test, attr))
Beispiel #6
0
 def test_datadrive_serialization(self):
     tests = datadrive.load_datadrive_tests(FooTest, 1)
     self.assertEqual(len(tests), 1)
     test = tests[0]
     deserialized_test = serialization.loads(serialization.dumps(test))
     self.assertEqual(deserialized_test.owner, "bar")
     self.assertEqual(deserialized_test.timeout, 5)
     self.assertEqual(deserialized_test.priority, TestCase.EnumPriority.BVT)
     self.assertEqual(deserialized_test.status, TestCase.EnumStatus.Implement)
     self.assertEqual(deserialized_test.tags, set(["a", "b", "c"]))
     self.assertEqual(deserialized_test.test_doc, "demo")
Beispiel #7
0
 def log_test_result(self, testcase, testresult ):
     '''记录一个测试结果
     
     :param testcase: 测试用例
     :type testcase: TestCase
     :param testresult: 测试结果
     :type testresult: TestResult
     '''
     objid = self._result_manager.add_result(testresult)
     self._ctrl_msg_queue.put((EnumProcessMsgType.Report_LogTestResult, 
                               self._worker_id, serialization.dumps(testcase), objid, testresult.passed))
Beispiel #8
0
 def log_test_result(self, testcase, testresult):
     '''记录一个测试结果
     
     :param testcase: 测试用例
     :type testcase: TestCase
     :param testresult: 测试结果
     :type testresult: TestResult
     '''
     objid = self._result_manager.add_result(testresult)
     self._ctrl_msg_queue.put(
         (EnumProcessMsgType.Report_LogTestResult, self._worker_id,
          serialization.dumps(testcase), objid, testresult.passed))
Beispiel #9
0
def _run_test_thread( worker_id, ctrl_msg_queue, testcase, testreport ):
    '''执行测试用例的线程
    
    :param worker_id: 工作者ID
    :type worker_id: string
    :param ctrl_msg_queue: 控制进程的消息队列
    :type ctrl_msg_queue: multiprocessing.Queue
    :param testcase: 测试用例
    :type testcase: TestCase
    :param testreport: 测试报告
    :type testreport: ITestReport
    '''
    try:
        runnner = getattr(testcase, 'case_runner', TestCaseRunner())
        result = runnner.run(testcase, testreport.get_testresult_factory())
        if isinstance(result, TestResultCollection):
            _log_collection_result(testreport, result)
        else:
            testreport.log_test_result(result.testcase, result)
        
        ctrl_msg_queue.put((EnumProcessMsgType.Worker_Idle, worker_id, serialization.dumps(testcase), result.passed))
    except:
        ctrl_msg_queue.put((EnumProcessMsgType.Worker_Error, worker_id, traceback.format_exc()))
Beispiel #10
0
 def dumps(self):
     '''序列化
     '''
     from testbase import serialization
     return [serialization.dumps(it) for it in self._testcases]
Beispiel #11
0
 def dumps(self):
     '''序列化
     '''
     from testbase import serialization
     return [serialization.dumps(it) for it in self._testcases]