我的程序
的Unittest模块实现了以下错误File "/usr/lib/python2.7/unittest/case.py", line 493, in _getAssertEqualityFunc
asserter = self._type_equality_funcs.get(type(first))
AttributeError: 'Utility' object has no attribute '_type_equality_funcs'
当我尝试创建一个公共类并尝试通过公共类实用程序测试函数执行以上错误但是使用正常的Unittest类实现时没有错误。
下面是没有任何错误执行的程序的详细说明
class BaseTestCase(unittest.TestCase):
def __init__(self, methodName='runTest', param=None):
super(BaseTestCase, self).__init__(methodName)
self.param = param
@staticmethod
def parametrize(testcase_klass, param=None):
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(testcase_klass)
suite = unittest.TestSuite()
for name in testnames:
suite.addTest(testcase_klass(name, param=param))
return suite
现在我继承了BaseTestCase类并调用了testcases ..
class salesgrowth_DevInt(BaseTestCase):
def setUp(self):
print "constructor"
pwd = os.getcwd()
def test4_refactoring(self,log):
if (STATUS.lower() == "completed" or STATUS == "Actor : SUCCESS"):`enter code here`
self.assertEqual(os.stat(OUTPUT + '/tes1.txt').st_size, 0,
'employee count is not matching with master data . Different entries are in test1.txt\n')
到目前为止一切正常
现在像salesgrowth_DevInt测试用例一样,没有其他继承BaseTestCase和执行test4_refactoring测试用例的测试用例(这里例如没有删除行的测试用例),以避免重复代码 我创建了公共类实用程序包括test4_refactoring函数,用于所有测试用例,如salesgrowth_DevInt。
下面是Common Utility class code
import sys
import json, sys, os, argparse, commands, time, string, filecmp
import unittest
class Utility(object):
''' common utility class for common test cases operations'''
def __init__(self):
print "constructor"
pwd = os.getcwd()
print "Current working directlry %s\n" % pwd
global scriptpath
scriptpath = os.path.join(pwd, "src/Runner/")
maxDiff = int(80)
def test4_refactoring(self,STATUS,BASE,ANALYSIS_DIR,OUTPUT,log):
print "common function"
log.write('\n')
if (STATUS.lower() == "completed" or STATUS == "Actor : SUCCESS"):
self.assertEqual(os.stat(OUTPUT + '/tes1.txt').st_size, 0,
'employee count is not matching with master data . Different entries are in test1.txt\n')
but using utility code when i try to execute below statment
self.assertEqual(os.stat(OUTPUT + '/tes1.txt').st_size, 0,
'employee count is not matching with master data . Different entries are in test1.txt\n')
getting below errors
Traceback (most recent call last):
File "/src/testCases/salesgrowth_DevInt.py", line 96, in test4_refactoring
utils_obj.test4_refactoring(self.STATUS,self.BASE,self.ANALYSIS_DIR,self.OUTPUT,log)
File "/src/common/Utils.py", line 436, in test4_refactoring
'employee count is not matching with master data. Different entries are in test1.txt\n')
File "/usr/lib/python2.7/unittest/case.py", line 512, in assertEqual
assertion_func = self._getAssertEqualityFunc(first, second)
File "/usr/lib/python2.7/unittest/case.py", line 493, in _getAssertEqualityFunc
asserter = self._type_equality_funcs.get(type(first))
AttributeError: 'Utility' object has no attribute '_type_equality_funcs'
Please let me know if any one has any pointers or suggestion for above issue and what is wrong in above implementation.
答案 0 :(得分:3)
TcpStream
仅适用于继承self.assertEqual
类的类,unittest.TestCase
类没有这样做。
我建议您尝试将Utility
方法放在Utility
类下。
给它起一个不以BaseTestCase
开头的名称,稍后调用这个新函数来验证你的断言以用于许多其他函数。