如何测试类中的函数[python,pyCharm]

时间:2015-01-07 01:32:21

标签: python function class call

我正在通过udacity.web_development课程自学编码。我的编码很好,但我经常遇到与流程有关的问题,而不是代码。

就像现在一样: 我不知道如何在一个类中测试这个函数(passwort_check)。我不能称之为。 当我把"打印MainHandler.passwort_check((self或MainHandler)," string")"在底部它给我一个类型错误。

我现在知道所有这些webhandlerstuff都没用。但我以后需要它。评论一切,但我需要的一个功能不是正确的解决方案。

这是我的代码:

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:必须使用MainHandler实例作为第一个调用unbound方法passwort_check()>参数(获取类型实例)

但我的问题更为通俗:在这种情况下,你们是如何做专业/经验的编码人员进行代码验证的?

2 个答案:

答案 0 :(得分:2)

您需要先创建一个MainHandler类的实例。像:

my_handler = MainHandler()

然后调用其中的函数。像:

my_handler.passwort_check('passwort_string')

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

希望它有所帮助。:)

答案 1 :(得分:2)

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

@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这样的正则表达式测试站点可能会更容易。)