如何在不使用subprocess或pexpect模块的情况下将输入值发送到终端

13 浏览
0 Comments

如何在不使用subprocess或pexpect模块的情况下将输入值发送到终端

我正在尝试为一个Python脚本编写单元测试。我的脚本接受用户输入,确定是否需要代理凭证。我看过一些答案-1, 答案-2, 答案-3,像使用子进程和pexpect进行执行。但是,我的意图是在接受用户输入之后,在脚本中执行其他函数。因此,执行脚本是没有帮助的。我的Python脚本如下。有人能给我提供建议或解决方法吗?

import getpass
class ProxyDetails:
    def __init__(self,option):
        self.option = option
        self.proxy_option = self.get_web_proxy_details()
        self.call_request()
        self.parse_test()
    def get_web_proxy_details(self):
        if self.option == "Default":
            choice = raw_input("Enter credentials : Y/N ").lower()
            if choice.lower() == "y":
                self.proxy_username = getpass.getpass("Enter Username for Proxy : ")
                self.proxy_password = getpass.getpass("Enter Password for Proxy : ")
                self.requireProxyCredentials = "Y"
            elif choice.lower() == "n":
                print("credentials are not present ")
        else:
            print("proxy is none ")
    def call_request(self):
        # this method will do API call
        pass
    def parse_test(self):
        #this method will parse the json
        pass
obj=ProxyDetails(option="Default")

我想在提示“输入凭证:Y/N”时发送输入值。

admin 更改状态以发布 2023年5月21日
0
0 Comments

事实上,这是一个重复的问题。我不会将其删除,因为它可能对其他人有用。

import sys
import StringIO
f1 = sys.stdin
f = StringIO.StringIO('n') 
sys.stdin = f
obj=ProxyDetails(option="Default")
sys.stdin = f1

0