如何写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 分钟更新应用程序代码的漏洞测试套件(或花费数小时更新测试代码)真的很痛苦。

希望对您有所帮助。