如果这是正确的话,我不是,但是到目前为止,我正在为此编写单元测试。

 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/

10-12 17:44
查看更多