此函数将接受输入并根据输入调用登录函数。
def login_features():
print("Choose option to login")
print("1. BDO login")
print("2. GPM login")
print("3. Member login")
login_input = int(input())
switcher = {
1: bdo_login,
2: gpm_login, # I am calling the function instance
3: member_login
}
login = switcher.get(login_input, login_features)
login() # Executing the called function
我假设您想为
login_features()
编写一个测试。通常,我会重构函数,如下所示:这样,您就可以轻松地测试
execute_login_option
,而无需修补input()
如果需要生成一些输入,可以使用Python的
unittest.mock.patch
:在上下文中,我将对
input()
的调用的返回值重新定义为"foo"
。类似地,您可以在login_features
的测试用例中将返回值设置为所需的用户输入编辑(回答注释中关于如何测试不返回值的函数的问题):
如果您的函数没有返回要断言的值,它通常会将整个系统的状态更改为副作用(在您的示例中,这样的副作用可能是用户登录)。下面是如何在这种设置下进行测试的一个简单示例:
使用unittest.mock-框架可以利用更多的选项和可能性
相关问题 更多 >
编程相关推荐