简体   繁体   中英

How to send input values to terminal without using subprocess or pexpect modules

I am trying to write unit tests for a python script. My script takes user input whether proxy credentials are required or not. I have seen several answer-1 , answer-2 , answer-3 like executing with subprocess and pexpect. But my intention is that after taking user input, I have to execute other functions in the script. So executing the script doesn't help. My python script is below. Can someone provide me suggestions or with a way to achieve this?

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")

I want to send input value when Enter credentials : Y/N is prompted.

Actually, this is a duplicate question.I am not deleting this as it might be useful for someone else.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM