如何写python unittest for column name is a string?
How to write python unittest for column name is a string?
我不知道这是否正确,但是,到目前为止我已经有了这个,我正在尝试为此编写单元测试。
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,然后提供我要编写的单元测试。
申请代码:
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
单元测试(使用标准库中的单元测试):
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) 将所有位置参数作为关键字参数提供 -> 使稍后阅读测试更容易。
C) 每个测试用例一个断言(最多两个)-> 超过这个数量往往会使您的测试代码过于复杂。测试应该非常简单,任何人(即使是刚刚从 3 个月的编码训练营中雇用的实习生)都可以弄清楚。重写一个 10 分钟更新应用程序代码的漏洞测试套件(或花费数小时更新测试代码)真的很痛苦。
希望对您有所帮助。
我不知道这是否正确,但是,到目前为止我已经有了这个,我正在尝试为此编写单元测试。
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,然后提供我要编写的单元测试。
申请代码:
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
单元测试(使用标准库中的单元测试):
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) 将所有位置参数作为关键字参数提供 -> 使稍后阅读测试更容易。
C) 每个测试用例一个断言(最多两个)-> 超过这个数量往往会使您的测试代码过于复杂。测试应该非常简单,任何人(即使是刚刚从 3 个月的编码训练营中雇用的实习生)都可以弄清楚。重写一个 10 分钟更新应用程序代码的漏洞测试套件(或花费数小时更新测试代码)真的很痛苦。
希望对您有所帮助。