How to extract method using Suds in Python
Question: I want to extract all the methods and want to send some parameters using how
can I do automation using python.

I want only methods as user input and send parameters to the method. How can I
achieve this?

    
    
    from suds.client import client
    url="name fo the url"
    client=Client(url)
    Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    
    Service ( Services ) tns="http://www.altoromutual.com/bank/ws/"
    Prefixes (1)
    ns0 = "http://www.altoromutual.com/bank/ws/"
    Ports (2):
    (ServicesSoap)
     Methods (3):
        GetUserAccounts(xs:int UserId, )
        IsValidUser(xs:string UserId, )
        TransferBalance(MoneyTransfer transDetails, )
     Types (4):
        AccountData
        ArrayOfAccountData
        MoneyTransfer
        Transaction
      (ServicesSoap12)
     Methods (3):
        GetUserAccounts(xs:int UserId, )
        IsValidUser(xs:string UserId, )
        TransferBalance(MoneyTransfer transDetails, )
     Types (4):
         AccountData
        ArrayOfAccountData
        MoneyTransfer
        Transaction 
    


Answer: To list all the methods available in the WSDL:

    
    
    >>> from suds.client import Client
    >>> url_service = 'http://www.webservicex.net/globalweather.asmx?WSDL'
    
    >>> client = Client(url_service)
    >>> list_of_methods = [method for method in client.wsdl.services[0].ports[0].methods]
    
    >>> print list_of_methods
    [GetWeather, GetCitiesByCountry]
    

Then to call the method itself:

    
    
    >>> response = client.service.GetCitiesByCountry(CountryName="France")
    

Note: Some simple examples are available at "[Python Web Service Client Using
SUDS and
ServiceNow](http://community.servicenow.com/blog/christophermaloy/python-web-
service-client-using-suds-and-servicenow)".

Following @kflaw's comment, this is how to retrieve the list of parameters
that one's should pass to a method:

    
    
    >>> method = client.wsdl.services[0].ports[0].methods["GetCitiesByCountry"]
    >>> params = method.binding.input.param_defs(method)
    >>> print params
    [(CountryName, <Element:0x10a574490 name="CountryName" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />)
    

