1

如果它是在 xmlrpc 客户端/服务器之间包含单个 xml-rpc 请求/响应的单元测试,它可以正常工作并在一端生成报告,但如果场景扩展到多个 xmlrpc 请求,则不会生成报告。

这是代码片段模板:

在我拥有的一台机器 ABC 上,

class ABC():
          def add():
                .......
          def subtract():
                .......

class MachineABCTest(unittest.TestCase):
         def test_ABC(self):
               x1 = abc_client.multiply() #method which resides in MachineXYZTest
               y1 = abc_client.divide() #method which resides in MachineXYZTest

suite = unittest.TestLoader().loadTestsFromTestCase(MachineABCTest)
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2)
runner.run(suite)

class ServerThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.abc_server = SimpleThreadedXMLRPCServer(("XXX.XXX.XXX.1", 8000))
        self.abc_server.register_instance(ABC()) #methods add & subtract will get registered

    def run(self):
        self.moderator_srv.serve_forever()

abc_server = ServerThread()
abc_server.start()

在另一台机器上,

class XYZ():
          def multiply():
                .......
          def divide():
                .......

class MachineXYZTest(unittest.TestCase):
         def test_XYZ(self):
              x2 = xyz_client.add() #method which resides in MachineXYZTest
              x2 = xyz_client.subtract() #method which resides in MachineXYZTest

suite = unittest.TestLoader().loadTestsFromTestCase(MachineXYZTest)
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2)
runner.run(suite)

class ServerThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.xyz_server = SimpleThreadedXMLRPCServer(("XXX.XXX.XXX.2", 8000))
        self.xyz_server.register_instance(XYZ()) # methods multiply & divide will get registered

    def run(self):
        self.xyz_server.serve_forever()

xyz_server = ServerThread()
xyz_server.start()

导入语句也没有错

import HTMLTestRunner
reload(HTMLTestRunner)

dir = "D:\\Test\\ABC_XYZ_Test"
fp = file(os.path.join(dir, "TestResult.html"), "wb")

我已将其包含在两个文件中。

如果只有一个来自 ABC 的电话,它会生成报告,例如

x1 = abc_client.multiply() #method which resides in MachineXYZTest

和 xyz_server 服务于该请求。在这种情况下,报告将在客户端(此处为 ABC)生成。

仅当发生双向通信“或”有多个请求(如上面的代码片段中所示)(从 ABC 到 XYZ 或反之亦然)时,才会出现此问题。

谢谢。

4

0 回答 0