dry-python/dry-python.github.io

Database fixtures considered harmful.

proofit404 opened this issue · 0 comments

An article about better test fixtures

  • dependencies can turn stories business objects into pytest fixtures.
  • We will write better tests because our database fills up logic does not duplicate in FactoryBoy.
  • @value decorator can be used to return normal results from the factories.
@register
class SubmitCodeFixture(SubmitCode):

    name = 'submit_code'

    @value
    def fixture(submit_code, user, token):
        return submit_code(user, token)

    user = require('request_code')

    token = Faker('uuid')
  • profit: Tests coupled with business logic will fail if this logic changes. On the other side, we'll need to change each FactoryBoy usage in our test suite to mirror actual behavior.