如何在 class [python, pyCharm] 中测试一个函数

how to test a function inside a class [python, pyCharm]

我现在正在通过 udacity.web_development 课程自学编码。我的编码越来越好了,但我经常遇到与过程相关的问题,而不是与代码相关的问题。

喜欢现在: 我不知道如何在 class 中测试此函数 (passwort_check)。我不能叫它。 当我把 "print MainHandler.passwort_check((self or MainHandler), "string")" 放在底部时,它给我一个类型错误。

我知道现在所有这些网络处理程序都是无用的。但我以后需要它。评论一切,但我需要的一个功能不是正确的解决方案。

这是我的代码:

import webapp2
import re


class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello world!')

    def passwort_check(self, passwort_string):
        if re.match("^[a-zA-Z0-9_-]{3,20}$", passwort_string):
            print passwort_string
        else: print "change pw"

    print MainHandler.passwort_check(MainHandler,"hallo")

app = webapp2.WSGIApplication([
                                  ('/', MainHandler)
                              ], debug=True)

这是我的错误:

TypeError: unbound method passwort_check() must be called with MainHandler instance as first > argument (got type instance instead)

但我的问题更笼统:在这种情况下,你们或 professionals/experianced 编码人员如何进行代码验证

您需要先创建 class MainHandler 的实例。喜欢:

my_handler = MainHandler()

然后调用其中的函数。喜欢:

my_handler.passwort_check('passwort_string')

如果您需要为此做一些 unittest。检查此 link。它会给你一些指示。

希望对您有所帮助。:)

鉴于 MainHandler.passwort_checkself 参数没有任何作用,您可以——至少现在——将其定义为 static method。与在 class 定义中声明的普通方法不同,静态方法不会隐式接收调用它们的实例作为它们的第一个参数。事实上,根本不需要在任何实例上调用它们。

@staticmethod  # This is called a "decorator"
def passwort_check(passwort_string)  # Omit self from the parameters
    # The rest of your code remains the same

然后你可以简单地按照你做的方式调用它,但你不需要虚拟一个实例作为第一个参数传递。

MainHandler.passwort_check('string')

应该可以正常工作。

(当然,如果你只是想测试正则表达式,使用像 Regex101 这样的正则表达式测试站点可能会更容易。)