如果这是正确的话,我不是,但是到目前为止,我正在为此编写单元测试。
def ValidateInputs(self, class_column_name,):
class_column_name_ok = type(class_column_name) is str
if not class_column_name_ok:
raise(TypeError("Argument class_column_name must be a string type"))
我是在这次单元测试中这样做的,但是由于不确定,我还是不确定。任何帮助都感激不尽
def testClassColumnName(self):
self.assertTrue(type(class_column_name), "str")
最佳答案
不知道如何处理这些值,我不能说100%。我假设您将它们绑定到类上,然后提供我要编写的单元测试。
申请代码:
class MyClass(object):
"""This is my object, this is what it does"""
def validate_inputs(self, merge_columns, class_column_name):
"""some handy docstring"""
if not isinstance(class_column_name, str):
raise TypeError('Argument class_column_name must be a string, supplied {0}'.format(type(class_column_name))
self.class_column_name = class_column_name
单元测试(使用来自stdlib的单元测试):
import unittest
class TestMyClass(unittest.TestCase):
def setUp(self):
self.myclass = MyClass() # cheap way to always have a 'clean class' for testing
def test_validate_input_type_string(self):
"""Happy path test when input is correct, and everything works"""
self.myclass.validate_input(merge_columns='some-columns', class_column_name='some_column_name')
self.assertEqual(True, isinstance(self.myclass.class_column_name, str))
def test_validate_input_raises_typerror(self):
"""We raise TypeError if input != string"""
self.assertRaises(TypeError,
self.myclass.validate_input,
merge_columns=1234,
class_column_name=4321)
if __name__ == '__main__':
unittest.main()
单元测试的一般技巧:
A)使用self.assertEqual(A,B)->失败时的输出将为您提供失败原因的线索。通常使用self.assertTrue这样的东西只会输出一条错误消息,例如“ False is not True”;虽然100%准确,但不是很有用。
B)提供所有位置args作为关键字args->使以后阅读测试变得更加容易。
C)每个测试用例一个断言(最多两个)–>超过这个断言会使您的测试代码过于复杂。测试应该是如此简单,以至于任何人(甚至是刚从3个月的编码训练营中雇用的实习生)都可以弄清楚。重写漏洞测试套件(或花数小时来更新测试代码)确实很痛苦,因为它需要对应用程序代码进行10分钟的更新。
希望这会有所帮助。
关于python - 如何为列名是字符串编写python unittest?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36026725/