In less than 12 months, Drupal 7 will be end-of-life and no longer supported. Plan your upgrade to Drupal 10 now.

Tests can assert multiple things

Similar to "a method should only have one return statement", I've seen similar advice when working with tests: "Tests should only have a single assertion".

I don't think this is true, and in my experience, you need multiple assertions to have a thorough test.

And, whilst similar assertions add some duplication, they can make the intent clearer and give better error messages.

Instead, I focus on one test case per test.

If I'm testing the following:

  • A blog page exists.
  • Only post nodes are visible.
  • Only published posts are visible,
  • Posts are returned in a specified order.

These will be split into separate tests - making it easier to read and maintain the code and have faster execution times by running only the tests I want with the minimum amount of code in each - regardless of how many assertions are in each.

- Oliver

P.S. Are you still using Drupal 7 and don’t know what’s involved to upgrade to Drupal 10? Book a Drupal 7 upgrade consultation call or an upgrade roadmap.

Was this useful?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an Acquia-certified Drupal Triple Expert with 17 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.