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











up vote
1
down vote

favorite












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.










share|improve this question


























    up vote
    1
    down vote

    favorite












    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.










    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      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.










      share|improve this question













      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.







      python






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 12 at 17:28









      Auto-learner

      239420




      239420
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          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





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267209%2fhow-to-send-input-values-to-terminal-without-using-subprocess-or-pexpect-modules%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            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





            share|improve this answer

























              up vote
              0
              down vote













              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





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                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





                share|improve this answer












                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






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 12 at 19:48









                Auto-learner

                239420




                239420






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267209%2fhow-to-send-input-values-to-terminal-without-using-subprocess-or-pexpect-modules%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                    ComboBox Display Member on multiple fields

                    Is it possible to collect Nectar points via Trainline?