I have 3 categories, i want to display on a loop the last 3 of every category

If you dont have the same post with more than 1 category, you can do:

$args = array(
    'cat' => $category->term_id,
    'post_type' => 'post',
    'posts_per_page' => '3',
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) { ?>
    <section class="<?php echo $category->name; ?> listing">
        <h2>Latest in <?php echo $category->name; ?>:</h2>
        <?php while ( $query->have_posts() ) {
            $query->the_post();
            ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class( 
'category-listing' ); ?>>
            <?php if ( has_post_thumbnail() ) { ?>
                <a href="https://wordpress.stackexchange.com/questions/281660/<?php the_permalink(); ?>">
                    <?php the_post_thumbnail( 'thumbnail' ); ?>
                </a>
            <?php } ?>

            <h3 class="entry-title">
                <a href="https://wordpress.stackexchange.com/questions/281660/<?php the_permalink(); ?>">
                    <?php the_title(); ?>
                </a>
            </h3>

            <?php the_excerpt( __( 'Continue Reading <span class="meta-nav">&rarr;</span>', 'twentyfourteen' ) ); ?>

        </article>

    <?php } // end while ?>

</section>

<?php } // end if

// Use reset to restore original query.
wp_reset_postdata();