我有希望成为一个非常普遍的问题。我正在测试XML文件并验证特定标签。我不想为每个字段重写代码,所以我试图重用标签检查代码。但是,当我尝试这样做时
这是我尝试使用UnitTest Framework的“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"))
答案 0 :(得分:0)
您正在使用“可重用类”的类不会从unittest.TestCase
继承,因此测试运行器不会选择它。相反,你有“可重用的类”本身继承自那。
一种可能的解决方案是使主类成为可重用类的子类,然后通过self
引用常用方法。当然,你必须给这个方法一个不同的名字,好像它的前缀是test_
,跑步者会认为它本身就是一个测试,它不是,并尝试运行它。所以:
from common import ValidateField
class Tests(ValidateField):
def test_testCreated(self):
self.field_test('./created')
答案 1 :(得分:0)
您的缩进似乎有问题吗?查看test_field
方法的定义,似乎只有前三个语句正确缩进,并且在测试方法的定义范围内。其余的代码在test_function的主体之外,因此没有任何东西可以断言。
这可能是你看到0跑测试的原因 - 因为在test_field
函数中没有任何东西需要测试。
更正缩进以确保所有剩余代码也出现在test_function
的定义下。希望它应该有效,否则我们将再看看。