0

我有一个我希望是一个非常普遍的问题。我正在测试 XML 文件并验证特定标签。我不想为每个字段重新编写代码,所以我试图重用标签检查代码。但是,当我尝试这样做时

这是我尝试在其中使用 UnitTest 框架的“ValidateField”类。这是我尝试使用的代码。我只是想这样称呼它。我得到的是单元测试框架运行了 0 个测试。我在程序的其他地方成功地使用了单元测试框架,我不想重用一个类。有人现在我会误入歧途吗?

这是我得到的输出:

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

----------------------------------------------------------------------

这是我正在调用可重用类的类/方法

import Common.ValidateField


class Tests():
    def test_testCreated(self):
        validate = Common.ValidateField.ValidateField()
        validate.test_field('./created')

这是使用单元测试框架的可重用类。

import unittest
import Main
import Common.Logger


class ValidateField(unittest.TestCase):
    def test_field(self, xpath):
        driver = Main.ValidateDriver().driver
        logger = Common.Logger.Logger
        tag = []

    for t in driver.findall("'" + xpath + "'"):
        tag.append(t)

    # Test to see if there is more than one tag.
    if len(tag) > 1:
        self.assertTrue(False, logger.failed("There is more than one " + "'" + t.text + "'" + " tag."))
    else:
        # Test for a missing tag.
        if len(tag) <= 0:
            self.assertTrue(False, logger.failed("There is no " + "'" + t.text + "'" + " tag."))
            # Found the correct number of tags.
        self.assertTrue(True, logger.passed("There is only one " + "'" + t.text + "'" + " tag."))

    # Test to make sure there is actually something in the tag.
    if t.text is None:
        self.assertTrue(False, logger.failed("There is a " + "'" + t.text + "'" + " tag, but no value exists"))
4

2 回答 2

0

您使用“可重用类”的类不继承自unittest.TestCase,因此不会被测试运行程序拾取。相反,您有“可重用类”本身继承自它。

一种可能的解决方案是让你的主类成为可重用类的子类,然后通过self. 当然,您将不得不给该方法起一个不同的名称,就好像它的前缀test_为 runner 会认为它本身是一个测试,但它不是,并尝试运行它。所以:

from common import ValidateField

class Tests(ValidateField):
    def test_testCreated(self):
        self.field_test('./created')
于 2013-08-29T15:53:32.490 回答
0

看来你的缩进有问题?查看test_field方法的定义,似乎只有前三个语句正确缩进并且在测试方法的定义范围内。其余代码在 test_function 的主体之外,因此不会断言任何内容。

这可能是您看到运行 0 测试的原因 - 因为在test_field函数中没有要测试的内容。

更正缩进以确保所有剩余代码也出现在test_function. 希望它应该起作用,否则我们将再看一遍。

于 2013-08-29T15:53:47.057 回答