My only comment here is the artifacts it leaves behind, ie lots of test users. I would suggest doing the following and consolidating the tests.
```python
def test_user_crud():
    user = new_user()
    user.create()
    with update(user):
        user.username = user.username + "edited"
    copied_user = user.copy()
    copied_user.delete()
    user.delete()
```

Doing this minimises the test time, it doesn't have to create 4 users, plus it cleans up after itself, assuming the test doesn't fail ;)