2013-08-29 49 views
0

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

这里是我尝试使用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")) 
+0

你是如何运行的(或者,在这种情况下......没有运行)测试? – geoffspear

回答

0

您正在使用的“可重复使用的类”,其中不从unittest.TestCase继承,所以不会被测试亚军被拾起的类。相反,你有“可重用类”本身继承。

一个可能的解决方案是让您的主类成为可重用类的子类,然后通过self参考常用方法。当然,你必须给这个方法一个不同的名字,就好像它的前缀是test_那么跑步者会认为这是一个测试本身,而不是,并且试图运行它。所以:

from common import ValidateField 

class Tests(ValidateField): 
    def test_testCreated(self): 
     self.field_test('./created') 
+0

谢谢丹尼尔。本来我是从unittest.TestCase继承的,我试图使用“可重用类”。但是,每次我尝试这样做时,我都无法加载测试,并得到以下错误: – user2643864

+0

Traceback(最近调用最后一次): 文件“C:\ Users \ sharmon \ PycharmProjects \ DriverValidator \ Tests \ TestCreated.py“,第7行,在test_testCreated中 return validate.ValidateField()。test_field('./ created') 文件”C:\ Python27 \ lib \ unittest \ case.py“,第191行,在__init__中 ( self .__ class__,methodName)) ValueError:在中没有这样的测试方法:runTest --------------------- ------------------------------------------------- 在1中运行1次测试。001s FAILED(errors = 1) – user2643864

+0

然后,我想我会从你说的“可重用类”继承它,但后来我得到以下错误。请让我知道我是否可以提供更多信息。 从公共进口ValidateField 类测试(ValidateField): 高清create_test(个体经营): 验证= self.ValidateField() validate.field_test(” ./创建 ') – user2643864

0

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

这可能是你看到跑0测试的原因 - 因为在test_field函数中没有什么可以测试的。

更正缩进以确保所有其余代码也出现在test_function的定义下。希望它能工作,否则我们会再看一次。

+0

感谢普拉哈拉德。当我将代码粘贴到此论坛中时,缩进不显示正确。但是,它在定义下正确缩进。 – user2643864

相关问题