0

I am writing some tests to evaluate a rest service my response is

[ { "Title_Id": 1, "Title": "Mr", "TitleDescription": "Mr", "TitleGender": "Male", "Update_Date": "2012-07-21T18:43:04" }, { "Title_Id": 2, "Title": "Mrs", "TitleDescription": "Mrs", "TitleGender": "Female", "Update_Date": "2012-07-21T18:42:59" }, { "Title_Id": 3, "Title": "Sir", "TitleDescription": "Sir", "TitleGender": "Male", "Update_Date": null } ]

and need to create multiple instance of the class

class TitleInfo:
  def __init__(self, Title_Id, Title, TitleDescription, TitleGender, Update_Date ):
    self.Title_Id = Title_Id
    self.Title = Title
    self.TitleDescription = TitleDescription
    self.TitleGender = TitleGender
    self.Update_Date = Update_Date

what I have done is

def GetTitle(self):
  try:
    response = *#......"The string shown above"*
    if  isinstance(response, str) :
      Records = json.loads(response)
      RecTitles = []
      for num in range(0, len(Records)):
        RecTitle =TitleInfo(Records[num]['Title_Id'],Records[num]['Title'],Records[num]['TitleDescription'],Records[num]['TitleGender'],Records[num]['Update_Date'])
        RecTitles.append(RecTitle)

This is working fine ....I need to know is there more short and sweet way to do that?

2 Answers 2

2

You could just unpack each dict and give that as an argument to TitleInfo:

RecTitles = [TitleInfo(**x) for x in json.loads(response)]

Here's the explanation from Python tutorial:

In the same fashion, dictionaries can deliver keyword arguments with the **-operator:

>>> def parrot(voltage, state='a stiff', action='voom'):
...     print("-- This parrot wouldn't", action, end=' ')
...     print("if you put", voltage, "volts through it.", end=' ')
...     print("E's", state, "!")
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
Sign up to request clarification or add additional context in comments.

Comments

1

As an aside, you generally want to avoid hand-coding validation code. Checkout an API documentation framework: swagger, RAML, API Blueprint. All of them have tooling for request/response validation.

The next step would be to use a testing framework like dredd.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.