我正在尝试在python中编写一个测试用户名和密码条目的单元测试。我正在使用提示输入用户名和密码。
我有两个单独的功能,提示用户输入用户名和密码。这两个函数然后检查长度。如果密码长度为零,密码函数还会检查我们所做的异常。他们是否可以模仿这些例外?
我很挣扎,因为我可以通过用户名提示,但pytest脚本在用户名输入后保留。有没有办法模拟用户名和密码?
我是python的新手,我查看了文档,但我看到的一切通常都是Python 3.x.x,我们目前还没有实现。任何帮助将不胜感激。
我认为 init 功能实际上是导致我遇到的大部分麻烦。有办法解决这个问题吗?
class Login(object):
def __init__(self, args, env="test"):
created_token = self.login()
def login(self):
username = self.args.username
if len(username) == 0:
username = self._get_username()
password = self.args.password
if len(password) == 0:
password = self._get_password(username)
def _get_username(self):
return prompt('%s Username (%s): ' % (self.domain)
def _get_password(self):
if password is None:
password = prompt_sensitive('%s Password: ' % self.domain)
try:
except ParseError,e:
print "ParseError message"
except ClientError,e:
print "ClientError message"
答案 0 :(得分:0)
您可以使用依赖注入来注入提示。
def password_function(input_func=None):
input_func = input_func or input
...
def test_password_function(self, ...):
fake_input = Mock()
...
result = password_function(fake_input)
由于前一个呼叫签名有效,因此不会破坏现有代码。例如password_function()
。但是,如果您无权更改代码,则可以修补input
函数。
import __builtin__
@mock.patch(__builtins__, 'input', return_value=...)
def test_password_function(self, mock_input):