Q:

Can't display more than 1 sprites - PyGame

Problem
My problem is that I have a game that generates 8 obstacles at the start of the game. The issue is that when I loop through the obstacles list, and update the sprites group, it only generates 1 sprite.
What I Want To Happen
When the game loads, I want 8 squares to fly down from the top of the window at random speeds, and starting at random positions.
What Is Currently Happening
Currently, when the game loads, only one square is falling from the screen.
PYthon Code
OBSTICLES_AMOUNT = 8

class Obstacle(pygame.sprite.Sprite):
def __init__(self):
    pygame.sprite.Sprite.__init__(self)

    self.image = pygame.Surface((30, 30))
    self.image.fill(BLUE)
    self.rect = self.image.get_rect()
    self.rect.x = random.randrange(0, WIDTH - self.rect.width)
    self.rect.y = random.randrange(-100, -40)
    self.velY = 6

def animate(self):
    self.rect.y += self.velY

class Game(pygame.sprite.Sprite):
def __init__(self):
    pygame.sprite.Sprite.__init__(self)

    pygame.init()
    pygame.mixer.init()

    self.screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption(TITLE)
    self.running = True
    self.clock = pygame.time.Clock()

    self.obstaclesList = []
    self.allSprites = pygame.sprite.Group()
    self.obstacles = pygame.sprite.Group()

def new(self):
    # create a new game

    # add obstacles to list
    for i in range(OBSTICLES_AMOUNT):
        self.obstacle = Obstacle()
        self.obstaclesList.append(self.obstacle)

    # make new sprite using list
    for i in self.obstaclesList:
        self.allSprites.add(i)
        self.obstacles.add(i)

    self.gameLoop()

def gameLoop(self):
    # main game loop
    while self.running:
        self.draw()

def draw(self):
    self.screen.fill(WHITE)

    self.allSprites.draw(self.screen)
    for sprites in self.obstaclesList:
        sprites.update()

    self.allSprites.update()

A:

Your code is fixed by

adding missing imports
adding missing constants
renaming animate to update in the Obstacle class
calling pygame.display.update after drawing
using a Clock to limit the framerate  
adding event handling
adding code to create a Game instance

Some more improvements:

no need for obstaclesList if you already have obstacles 
you can pass Groups directly to Sprite's __init__ function
remove a Sprite when it's no longer on the screen

Here's the code:
import pygame
import random

OBSTICLES_AMOUNT = 8
WIDTH, HEIGHT = 800,600
TITLE='some game of falling stuff'
BLUE = pygame.color.THECOLORS['blue']
WHITE = pygame.color.THECOLORS['white']

class Obstacle(pygame.sprite.Sprite):
    def __init__(self, *args):
        pygame.sprite.Sprite.__init__(self, *args)

        self.image = pygame.Surface((30, 30))
        self.image.fill(BLUE)
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(0, WIDTH - self.rect.width)
        self.rect.y = random.randrange(-100, -40)
        self.velY = 6

    def update(self):
        self.rect.y += self.velY
        if self.rect.y > HEIGHT:
            self.kill()

class Game(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)

        pygame.init()
        pygame.mixer.init()
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode((WIDTH, HEIGHT))
        pygame.display.set_caption(TITLE)
        self.running = True
        self.clock = pygame.time.Clock()

        self.allSprites = pygame.sprite.Group()
        self.obstacles = pygame.sprite.Group()

    def new(self):
        # create a new game

        # add obstacles to list
        for i in range(OBSTICLES_AMOUNT):
            Obstacle(self.allSprites, self.obstacles)

        while self.running:
            self.allSprites.update()
            for e in pygame.event.get():
                if e.type == pygame.QUIT:
                    self.running = False
            self.draw()
            self.clock.tick(60)

    def draw(self):

        self.screen.fill(WHITE)

        self.allSprites.draw(self.screen)
        for sprites in self.obstacles:
            sprites.update()

        pygame.display.update()

if __name__ == '__main__':
    Game().new()

